假设共有三台Linux主机,为matser,slave1,slave2,现在要实现master主机可以ssh免密访问master主机自身以及slave1、slave2。
原理:
主机调用秘钥生成命令,产生一对公私秘钥,然后将公钥发送给目标主机保存。
当前主机如果想通过SSH免密登录目标主机,则会向目标主机发送请求,目标主机则发送给当前主机一个随机数,当前主机主机收到这个随机数后则使用自身的私钥进行加密并发送回给目标主机;目标主机接收到当前主机发送的加密信息后使用之前保存的当前主机的公钥进行解密,如果解密出的随机数和目标主机自己最初发送给当前主机的一致则允许当前主机登录,以此来实现ssh的免密登录。
公私秘钥生成命令:
ssh-keygen
将生成的位于.ssh位置下的公钥发送给目标主机,并将其内容写入目标主机的.ssh文件夹下的authorized_keys文件中:
Demo例子:(将公钥保存在自己主机的authorized_keys文件中,实现对自身的免密登录)
cat /root/.ssh/id_rsa.pub > /root/.ssh/authorized_keys
或采用更快捷的ssh-copy-id命令来实现将自身.ssh文件夹下的公钥写入到目标主机authorized_keys文件中的方法:
Demo例子:
假设当前主机为master,现在要将当前主机的公钥写入到三台目标主机(master、slave1、slave2)的authorized_keys文件中,命令:
ssh-copy-id root@master
ssh-copy-id root@slave1
ssh-copy-id root@slave2
==================================
例子: