文章目录
- 1、实现
- 2、原理
- 3、SSH的理解
1、实现
先写实现,解决问题后有兴趣的自己看后面的原理。
以实现节点A(主)免密登录到节点B(从)为例:(注意例子里节点B被登录)
步骤一:生成节点A密钥对
在节点A执行以下指令,一路回车,生成密钥对文件。
# 一路回车即可
ssh-keygen -t rsa -P ''
步骤二:将主节点的公钥文件拷贝到从节点上
将节点A的公钥文件拷贝到要被登录的节点B上。
scp ~/.ssh/id_rsa.pub root@你节点B的IP:~
步骤三:将主节点的公钥追加到从节点的授权文件中,并加权
在节点B执行:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
rm ~/id_rsa.pub
验证下效果,在节点A,ssh登录节点B,此时不提示输入节点B的密码,直接登录成功。
ssh 节点B的IP
2、原理
$HOME/.ssh/authorized_keys 文件中列出允许登录的(用户的)公钥.,当用户开始登录,ssh程序告诉服务器它准备使用哪对钥匙(公钥)做认证,服务器检查这只密钥(公钥)是否获得许可,如果许可,服务器向用户(实际上是用户面前运行的ssh 程序) 发出测试, 用用户的公钥加密一个随机数,这个随机数只能用正确的私钥解密,随后用户的客户程序用私钥解出测试数字,即可证明用户掌握私钥。由于私钥只被客户端持有,因此即使服务器被攻破,也无法获取到会话密钥,从而保护了用户的隐私和安全。
看图吧,大段文字有点窒息。
直白讲就是,A要免密码登录到B,B首先要拥有A的公钥,此外B还要做一次加密验证,这次验证中,对于非对称加密,公钥加密的密文不能公钥解开,只能私钥解开,因此A的公钥文件泄露也问题不大,因为这个验证拦截者只用公钥过不去。
3、SSH的理解
最后,贴一篇SSH的文章,很赞。
【深入理解SSH】
文中的图: