假设我们有A,B两台机器,我们需要实现A机器免密登陆到B机器.
1. 在A机器上生成证书
ssh-keygen -t rsa -b 4096 -C "name@***.com"
2. 我们把生成的公钥保存到authorized_keys中
#注意观察上面的日志,不一定就是id_rsa.pub这个名字 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys #修改权限authorized_keys chmod 600 ~/.ssh/authorized_keys
3. 把刚生成的公钥添加到B机器的~/.ssh/authorized_keys文件中(需要保证密码可以登陆)
#方法一:推荐 ssh-copy-id -i ~/.ssh/id_rsa_12 root@192.168.1.50 # 不加-i 默认的是~/.ssh/id_rsa.pub
#方法二: #把公钥上传到B机器 cat id_rsa.pub >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
这样每次登陆的时候就不需要输入密码来登陆了
这里内部的原理是这样的,由于前面机器B已经添加了机器A的公钥,所以当机器A发起 "ssh root@192.168.1.50" 时, 其实是先向B发送一个连接请求, 机器B得到机器A的信息后,在authorized_key中查找,如果有相应的用户名和IP,则随机生成一个字符串,并用机器A的公钥加密,发回给机器A; 机器A得到机器B发来的消息后,使用私钥进行解密,然后将解密后的字符串发送给机器B。机器B将自己生成的字符串和机器A发来的字符创进行对比,如果一致,则允许免登录。
还没有评论,来说两句吧...