Как отобразить имя пользователя @hostname в подсказке пароля SSHD
Когда я SSH к серверу, приглашение иногда отображает моего пользователя и имя хоста сервера:
xavier@local:~$ ssh server1
xavier@server1's password:
Иногда все, что я получаю, это Password:
xavier@local:~$ ssh server2
Password:
Что менее удобно при туннелировании (сложно узнать, нужно ли вводить пароль для второго сервера или нужно повторить первый, потому что я допустил ошибку, например), а также при использовании разных имен пользователей (я забыл установить правильный в .ssh/config
?).
Обычно я нахожу, что Debian/Ubuntu предложит user@hostname's password:
тогда как я вижу Password:
на серверах OpenSUSE/SLES/Mac.
Очевидно, что серверы настроены по-разному, но я не мог найти, что вызывает эту разницу. Как настроить сервер ssh для отображения имени пользователя и хоста в командной строке? Или, может быть, я могу сделать это на стороне клиента?
1 ответ
Расследуя немного дальше, кажется, что user@server's password
приглашение используется для аутентификации по паролю, тогда как Password:
отображается подсказка для интерактивной аутентификации с помощью клавиатуры. Я не знал, что эти два метода существуют. Они выглядят довольно похожими, так как обычно оба спрашивают пароль.
Так что хитрость заключается в том, чтобы:
Убедитесь, что на сервере включена аутентификация по паролю. В
/etc/ssh/sshd_config
:PasswordAuthentication yes
На стороне клиента установите
password
как предпочтительный методssh -o PreferredAuthentications=password server2
Целесообразно добавить
keyboard-interactive
метод к списку в случае, если на сервере отключена PasswordAuthenticationssh -o PreferredAuthentications=password,keyboard-interactive server2
Я добавил следующее к моему
.ssh/config
:Host * ServerAliveInterval 120 VerifyHostKeyDNS yes PreferredAuthentications publickey,password,keyboard-interactive
Я сейчас получаю user@server's password:
подскажите на всех хостах.