强制 ssh 登录密码

强制 ssh 登录密码

我有两台服务器,分别装有CentOS6和CentOS7。

它们都具有 SSH 访问权限。我的客户端计算机装有 Ubuntu 16.04。

对于 CentOS6 我可以使用命令登录

ssh -i ~/.ssh/serv1 root@serv1

但命令

ssh root@serv1

提示输入密码。对我来说没问题。

对于 CentOS7 我可以使用命令登录

ssh -i ~/.ssh/serv2 root@serv2

但命令

ssh root@serv2

不要提示输入密码。我也能成功登录。

当我从另一台计算机执行“ssh root@serv2”时,ssh 会提示输入密码,这没问题。

问题是:为什么我可以使用命令无需密码和 ssh 密钥登录到 serv2

ssh -i ~/.ssh/serv2 root@serv2

我找不到负责该问题的选项,也找不到这是 CentOS7 的标准行为。

如果需要更多信息请告诉我。

答案1

这是因为您已将您的身份(公钥)添加为 serv2 上的授权密钥/root/.ssh/authorized_keys。有关此文件的更多信息,请参阅man sshd部分。AUTHORIZED_KEYS FILE FORMAT

您的默认身份存储在~/.ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_rsa, id_ed25519以 .pub 结尾的文件和类似文件中,这些文件存储各自的公钥。当您尝试登录到任何远程 ssh 而不指定“-i”选项时,这些将提供给远程服务器。如果远程服务器在其下存储了其中任何一个,~/.ssh/authorized_keys那么您可以使用该密钥登录(即无需密码)。因为基于密码和基于公钥是授权远程用户的两种不同方法。

当您指定“-i”选项时,您只是提供存储在该文件中的不同的公钥。

您也可以随时使用“-v”选项运行 ssh,以获取有关远程接受哪种密钥方法/公钥的更多详细信息。如本例所示:

debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/nstorm/.ssh/id_rsa
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Offering ECDSA public key: /home/nstorm/.ssh/id_ecdsa
debug1: Server accepts key: pkalg ecdsa-sha2-nistp256 blen 104
debug1: Authentication succeeded (publickey).
Authenticated to 172.16.2.1 ([172.16.2.1]:22).

如果您不想在不使用“-i”选项设置非默认身份的情况下无需密码即可登录 serv2,则必须删除存储在 serv2 上的默认身份/root/.ssh/authorized_keys。它应该与您的本地~/.ssh/id_*.pub密钥在同一行。

相关内容