当我通过 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
如果服务器禁用了 PasswordAuthentication,则将该方法添加到列表中是明智的ssh -o PreferredAuthentications=password,keyboard-interactive server2
我最终将以下内容添加到我的
.ssh/config
:Host * ServerAliveInterval 120 VerifyHostKeyDNS yes PreferredAuthentications publickey,password,keyboard-interactive
我现在user@server's password:
在所有主机上都收到提示。