Назад | Перейти на главную страницу

Как отобразить user @ hostname в запросе пароля SSH

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

Итак, хитрость заключается в следующем:

  1. Убедитесь, что на сервере включена аутентификация по паролю. В /etc/ssh/sshd_config:

    PasswordAuthentication yes
    
  2. На стороне клиента установите 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: подскажите на всех хостах.