我有两个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键一样。