Якщо я запускаю це:
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
[*] Якщо ви можете розраховувати на те, щоб залишити пароль у файлі, доступному лише вам, і викорінити його на робочому клієнті.
Якщо можливо перезавантажити віддалену комп'ютер, що змінює ОС, або видалити жорсткий диск, комп'ютер не може вважатися повністю захищеним ... але в цьому випадку сама база даних не буде захищеною.