如以下操作还不能实现无密码登录的效果。可以从.ssh目录的所有者和所属组,和authorized_keys权限这两点上进行思考。
主机信息:192.168.116.132(客户端A)和 192.168.116.133(服务器B)
资料要从A端备份到B,或者从B下载资料到A
确认主机A上面是否有这个文件/root/.ssh/id_rsa.pub:没有的话就按如下所示
在这个过程中会有一些交互的过程,它首先提示要输入这个密钥的密码,出于安全考虑应该定义个密码,但是我们的目的就是为了自动化同步数据,所以这里不输入任何密码,直接按回车,即密码为空。
[root@bogon ~]# ssh-keygen (一直回车知道生成类似如下图案为止)
+--[ RSA 2048]----+
| =*o=+.|
|+Eo= o.|
|oo. + o|
| . +|
| o . . S |
| + . .|
| . o|
| . .|
| .|
+-----------------+
最后则生成了私钥(/root/.ssh/id_rsa)和公钥文件(/root/.ssh /id_rsa.pub)
把公钥文件的内容拷贝到目标机器上(两种方法推荐使用第一种。(root账号的家目录/root/.ssh/authorized_keys))
在这一步也许你会遇到/home/user1/.ssh目录不存在的问题(注意创建时候的目录的所有者和所属组drwx------ 2 user1 user1 4096 1月 21 00:06 .ssh),可以手动创建,并修改目录权限为700也可以执行ssh-keygen命令生成这个目录。
备份方法1)
[root@132 .ssh]#
scp /root/.ssh/id_rsa.pub user1@192.168.116.133:/home/user1/.ssh/authorized_keys
备份方法2)
直接复制主机A的/root/.ssh/id_rsa.pub文件内容,并粘贴到主机B的/home/user1/.ssh/authorized_keys中:
[user1@133 ~]# vim/home/user1/.ssh/authorized_keys
保存/home/user1/.ssh/authorized_keys文件后,再到主机A上执行:
[root@132 .ssh]# ssh user1@192.168.116.133
Last login: Thu Jan 21 00:00:22 from 192.168.116.132
[user1@133 ~]$
现在不用输入密码也可以登录主B了。下面先从A主机退出来,再从主机A上执行一下rsync命令试试吧。
[root@132 ~]# rsync-av rsync/test1/ user1@192.168.116.133:/tmp/test4/
以后想要在哪两台主机上的不同账户间实现SSH无密码登录的时候,只要将相应主机的公钥拷贝到主机相应用户的家目录下即可操作步骤如上所示。