如何在 SSHD 密码提示中显示用户@主机名

如何在 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:提示符用于键盘交互验证。我不知道有这两种方法。它们看起来非常相似,因为它们通常都会要求输入密码

因此诀窍是:

  1. 确保服务器上启用了密码验证。在/etc/ssh/sshd_config

    PasswordAuthentication yes
    
  2. 在客户端,设置password为首选方法

    ssh -o PreferredAuthentications=password server2
    

    keyboard-interactive如果服务器禁用了 PasswordAuthentication,则将该方法添加到列表中是明智的

    ssh -o PreferredAuthentications=password,keyboard-interactive server2
    

    我最终将以下内容添加到我的.ssh/config

    Host *
            ServerAliveInterval 120
            VerifyHostKeyDNS yes
            PreferredAuthentications publickey,password,keyboard-interactive
    

我现在user@server's password:在所有主机上都收到提示。

相关内容