首先准备两个虚拟机node01和node02
1.在node01生成公钥和私钥
运行以下命令:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
运行以上命令后会在 ~/.ssh/ 目录下生成一对密钥对。
2.拷贝公钥给node02
接下来,你想免密钥登录谁,只需要把自己的公钥传递给对方主机即可。这个公钥文件必须放在对方主机的 ~/.ssh/authorized_keys 文件中。可以使用命令将公钥文件自动传递过去,命令如下:
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node02
注意:第一次建立连接时会弹出一个警告,需要输入 yes 将该主机添加到当前设备的已知主机列表中。
传递过去后,可以在node02中通过cat命令查看文件内容
3.检查ak文件中是否有对方公钥
1.node02中随机生成一个字符串,例如abcd,使用对方公钥将abcd加密,例如密文1234,将加密后的密文发回对方。
2.node01中接收对方发回的密文,使用私钥解密,解密后得到明文abcd,将明文发回对方。
3.node02接受对方发回的明文,和最初生成的字符串进行比对,比对成功免密。
也可通过传输文件测试是否已免密:
[root@node01 ~]# scp /etc/profile root@note02:~
profile 100% 1819 2.0MB/s 00:00
通过测试发现已无需输入密码即可进行文件传输,至此,免密流程结束。注意:免密操作是单方面的,如果希望 node02 操作 node01 也 免密的话,需要将上述流程在 node02 机器上也做一次。
注意:使用root@主机名之前需要在 /etc/hosts 文件中添加 对应 IP 域名的映射,否则只能通过root@ip地址 来拷贝访问。