Якщо я запускаю це:
ssh user@server 'mysql -u user -p'
Коли він запитує мене для пароля MySQL, і я починаю вводити, пароль видно на екрані. Як я можу запобігти цьому? Якщо я ввійду в систему, sshа потім виконаю команду MySQL, все працює добре.
Якщо я запускаю це:
ssh user@server 'mysql -u user -p'
Коли він запитує мене для пароля MySQL, і я починаю вводити, пароль видно на екрані. Як я можу запобігти цьому? Якщо я ввійду в систему, sshа потім виконаю команду MySQL, все працює добре.
Відповіді:
Якщо ви надаєте віддалену команду для запуску, SSH не виділяє tty, тому віддалена команда не може відключити ехо. Ви можете змусити SSH надати tty за допомогою -tпараметра:
ssh -t user@server 'mysql -u user -p'
Еквівалентний варіант (для -oабо для конфігураційного файлу) є RequestTTY. Я застережуюсь від використання його в config, оскільки це може мати небажані ефекти для неінтерактивних команд .
RequestTTYв man 5 ssh_config.
Якщо ви можете довіряти [*] безпеці віддаленого комп’ютера, ви можете зберігати пароль у належним чином захищеному файлі опцій, як це запропоновано в розділі Посібника кінцевого користувача щодо безпеки пароля цього посібника, без необхідності спілкування через sshабо вводити кожен час.
Зокрема, ви можете додати рядок у розділі [client] .my.cnfу вашому домашньому каталозі:
[client]
password=your_pass
Звичайно, ви повинні не захищати цей файл для всіх, окрім себе, встановивши режим доступу до файлу 400 або 600 за допомогою, наприклад,
chmod 600 ~/.my.cnf
Тоді ви можете використовувати щось подібне
ssh user@server 'mysql -u user110971 --defaults-file=/home/user110971/mysql-opts'
де user110971ім’я користувача вашого облікового запису.
ssh -t)Ця проблема виникає щоразу, коли ви надсилаєте команду через, sshі вам потрібно вставити вхід, оскільки, за замовчуванням, sshне буде виділено псевдо-tty.
Ви можете примусити виділити tty за допомогою параметра -t(навіть більше, якщо потрібно):
-tПримусове виділення псевдо-тти. Це може бути використано для виконання довільних програм на екрані на віддаленій машині, що може бути дуже корисно, наприклад, під час реалізації служб меню. Кілька
-tопцій примушують розподілити tty, навіть якщо ssh не має локальних tty.
Як ви можете прочитати в цій публікації Debian (Jul_11_2008) про sudo, це стара проблема, яка любить повторюватися:
ssh user@server "sudo ls" password: passwordІ пароль показаний вам
Рішення полягає в тому, щоб змусити ssh виділити псевдо-tty з прапорцем -t:
ssh -t user@server sudo ls
[*] Якщо ви можете розраховувати на те, щоб залишити пароль у файлі, доступному лише вам, і викорінити його на робочому клієнті.
Якщо можливо перезавантажити віддалену комп'ютер, що змінює ОС, або видалити жорсткий диск, комп'ютер не може вважатися повністю захищеним ... але в цьому випадку сама база даних не буде захищеною.