为sshlogin强制密码

我有两个CentOS6和CentOS7的服务器。

他们都有SSH访问权限。 我的客户端电脑有Ubuntu 16.04。

对于CentOS6我可以用命令login

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

但命令

 ssh root@serv1 

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

对于CentOS7我可以用命令login

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

但命令

 ssh root@serv2 

不要提示密码。 我也可以成功login。

当我从另外一台计算机上执行“ssh root @ serv2”时,ssh会提示密码,这是可以的。

问题是:为什么我可以不用密码login到serv2,也没有用ssh键命令

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

我找不到对它负责的选项,找不到这是CentOS7的标准行为。

告诉我是否需要额外的信息。

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

您的默认身份存储在~/.ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_rsa, id_ed25519文件以及以.pub存储相应公钥的类似文件中。 当您尝试login到任何远程SSH而不指定“-i”选项时,这些提供给远程服务器。 如果远程服务器有任何这些存储在他们的~/.ssh/authorized_keys那么你可以使用该密钥(即没有密码)login。 因为基于密码和基于公钥的是两种不同的授权远程用户的方法。

当你指定'-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). 

如果您不想在不使用密码的情况下login到serv2,而您没有使用“-i”选项设置非默认身份,则必须删除存储在servro上的默认身份/root/.ssh/authorized_keys 。 它应该和你本地的~/.ssh/id_*.pub键一样。