ssh连接无需密码登录的实现方法
现有两台机器A与B,A:10.240.210.131 用户为root;B:10.240.210.233 用户为root
要实现在A机器上通过ssh连接到B时不用输入密码。
1.在A机器执行ssh-keygen -t rsa生成一对rsa公私钥,生成的密钥对会存放在~/.ssh目录下。
root@test .ssh$ssh-keygen -t rsa
2.在B机器上root的用户目录下创建~/.ssh目录。
ssh root@10.240.210.233
mkdir -p .ssh
3.将10.240.210.131上用户“root”的公钥拷贝到root@10.240.210.233上,来实现无密码的ssh功能。
$ cat .ssh/id_rsa.pub | ssh aliceB@hostB 'cat >> .ssh/authorized_keys'
附注:
上述的创建目录并复制的操作(步骤2与3)也可以通过一个 ssh-copy-id 命令一步完成
root@test .ssh$ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.240.210.233
疑难解答
即使在密钥认证生效后,你可能仍然需要输入SSH密码。如果遇到这种情况,请检查系统日志(如/var/log/secure)以查看是否出现下面的异常。
Authentication refused: bad ownership or modes for file /home/aliceB/.ssh/authorized_keys
在这种情况下,密钥认证的失败是由于~/.ssh/authorized_keys文件的权限或拥有者不正确。一般情况,如果这个文件对除了你之外的所有用户都可读,就会出现这个错误。用下面的方式改变文件的权限以修正错误。
$ chmod 700 ~/.ssh/authorized_keys