A服务器通过 ssh 免密码登录 B 服务器
步骤如下:
A 服务器:
#(连续三次回车,即在本地生成了公钥和私钥,不设置密码)
[root@localhost ~]# ssh-keygen -t rsa
#(需要输入密码--如果B 服务器上存在.ssh文件夹,跳过此步)
[root@localhost ~]# ssh root@B服务器I -p 22 "mkdir .ssh"
[root@localhost ~]# scp -P 22 ~/.ssh/id_rsa.pub root@B服务器IP:.ssh/id_rsa.pub
B 服务器:
# touch /root/.ssh/authorized_keys (如果已经存在这个文件, 跳过这条)
# cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys (将id_rsa.pub的内容追加到authorized_keys 中)
小结:登录的机子可有私钥,被登录的机子要有登录机子的公钥。这个公钥/私钥对一般在私钥宿主机产生。上面是用rsa算法的公钥/私钥对,当然也可以用dsa(对应的文件是id_dsa,id_dsa.pub)
想让A,B机无密码互登录,那B机以上面同样的方式配置即可。
- 原理
- 1.在A上生成公钥私钥。
- 2.将公钥拷贝给server B
- 3.Server A向Server B发送一个连接请求。
- 4.Server B得到Server A的信息后,在authorized_key中查找,如果有相应的用户名和IP,则随机生成一个字符串,并用Server A的公钥加密,发送给Server A。
- 5.Server A得到Server B发来的消息后,使用私钥进行解密,然后将解密后的字符串发送给Server B。Server B进行和生成的对比,如果一致,则允许免登录。
总之:A要免密码登录到B,B首先要拥有A的公钥,然后B要做一次加密验证。对于非对称加密,公钥加密的密文不能公钥解开,只能私钥解开。