假设:这里有两台电脑,一台是itcast,一台是itcast02,itcast01想要免登录到itcast02。
1、在itcast01上生成一对密钥。shell命令 ssh-keygen -t rsa 执行完成之后,会在~/.ssh文件夹下多出两个文件,id_rsa和id_rsa.pub,将itcast01的公钥拷贝给itcast02。
2、执行 ssh-copy-id itcast02 这个命令,会将itcast01的~/.ssh目录下的 id_rsa.pub拷贝到itcast02的~/.ssh的文件目录下,但是名字改成了authorized_keys。可以调用more id_rsa.pub(在itcast01上) 和more authorized_keys(在itcast02上)命令来查看,其内容是一样的。
3、itcast01向itcast02发送一个ssh请求,包括当前主机名root。
4、itcast02在获得itcast01的信息后(用户名和主机),然后到 ~/.ssh/authorized_keys进行查找,如果 查找到,itcast02会随机生成一个字符串(zxcv...),然后用itcast01的公钥进行加密。
5、itcast02将加密后的字符串发送给itcast01。
6、itcast01接收到itcast02发送来的加密后的字符串,会用自己的私钥进行解密。
7、itcast01将解密后的字符串发送给itcast02。
8、itcast02得到itcast01发来的解密后的字符串,跟他生成的那个字符串进行对比,如果一直,可以免登录。
说明:原理来自穿智播客视频讲解