两台服务器之间scp也好,pssh也好,每一次互相传输文件或者远距离控制都要输入对方账号对应的密码,这是一个很麻烦很讨厌的事儿。这么麻烦又讨厌的事儿应该怎么避免呢?这就是ssh的信任登陆。
假设A与B是两台服务器,其中A是server,B是client。A是发起ssh请求的一方,B是接收ssh请求的一方。
在A机器上,# ssh-keygen -t dsa,这一步是生成一个ssh的共/私密匙对。回车之后,会出现如下的信息:
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa): 这一步,是选择保存密匙的目录,直接回车就行
Enter passphrase (empty for no passphrase): 这一步是询问这个信任关系是否需要密码,如果是过的硬的关系,自然不需要密码的,所以继续回车
Enter same passphrase again:对上一步进行确认,三联回车,然后就是这样,不但生成了“key指纹”还生成了一个图案。
然后来到/root/.ssh里,就会发现多了两个文件:id_dsa 和 id_dsa.pub,其中id_dsa.pub是需要给B服务器的。这样一个钥匙一式两份,A一份B一份,两个是一对所以就这样建立了信任关系。
在B服务器输入 #scp A的ip地址:/root/.ssh/id_dsa.pub /root/.ssh,这样就把A服务器的id_dsa.pub文件拽到自己的/root/.ssh文件夹里,然后#mv id_dsa.pub authorized_keys ,如果改名叫authorized_keys2 的话,就是通过SSH2的方式连接。
现在A与B之间就建立了ssh信任关系,注意!目前这个信任关系是单向的,即A找B的root用户(文件在/root文件下)要文件,是不需要B的 root用户密码,如果B反过来找A要文件的话,还是要A的密码的。
改完之后,别忘了确认authorized_keys 的chmod 是644。
要是对方机器把authorized_keys删除掉,那么scp或者pssh的话就恢复要密码的环节了。linux历史连接信息在/var/log/secure中。
参考资料:http://www.dongwm.com/archives/%E5%85%B3%E4%BA%8Essh%E5%91%BD%E4%BB%A4%E7%A0%94%E7%A9%B6%E4%BB%A5%E5%8F%8Assh%E4%BF%A1%E4%BB%BB%E8%AF%A6%E8%A7%A3/