Когда я подключаюсь к серверу по 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-сервер для отображения имени пользователя и имени хоста в приглашении? А может я смогу сделать это на стороне клиента?
Изучив немного дальше, выясняется, что user@server's password
приглашение используется для аутентификации пароля, тогда как Password:
приглашение отображается для интерактивной аутентификации с клавиатуры. Я не знал, что существуют эти два метода. Они выглядят очень похоже, поскольку обычно оба запрашивают пароль..
Итак, хитрость заключается в следующем:
Убедитесь, что на сервере включена аутентификация по паролю. В /etc/ssh/sshd_config
:
PasswordAuthentication yes
На стороне клиента установите password
как предпочтительный метод
ssh -o PreferredAuthentications=password server2
Разумно добавить keyboard-interactive
в список, если на сервере отключена проверка подлинности пароля
ssh -o PreferredAuthentications=password,keyboard-interactive server2
В итоге я добавил в свой .ssh/config
:
Host *
ServerAliveInterval 120
VerifyHostKeyDNS yes
PreferredAuthentications publickey,password,keyboard-interactive
Я сейчас получаю user@server's password:
подскажите на всех хостах.