七叶笔记 » golang编程 » SSH免密登录你了解么

SSH免密登录你了解么

ssh免密登录的原理

首先免密登录要从SSH的流程说起,最常见的是密码登录,流程如下

免密登录要实现的是客户端向服务端发起连接请求的时候,服务端已经 认识 客户端,从而实现直接授权。

通过1个类比来理解这个原理:

密码登录就是小弟要到山上的寨子里去,结果看门的大爷说了自己的暗号( 12345 )小弟收到暗号后,根据组织上给的算法,报上暗号( 123456 ,其实就是加了后面一个数字)。对头!放行。

那么实现免密登录就是不想提供密码,这个时候交互的逻辑是不会变的,对方一定要检验客户端信息。不输入密码,那就对服务端的任意一个信息进行校验就可以。

比如:

上面的大爷今天说的是12345,明天说的可能是123456。

那么如何保证你就是山寨里的人呢,就要“算法”一致。这个可以通过客户端生成一对秘钥来,然后把公钥分发给服务端。“算法”一致就是你加密的我能解密,解出来给你看看,就知道我是不是山寨的人了。

所以操作逻辑是这样

1.在A上生成公钥 私钥

2.将公钥拷贝给server B,要重命名成authorized_keys(从英文名就知道含义了)

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要做一次加密验证。对于非对称加密,公钥加密的密文不能公钥解开,只能私钥解开。

具体操作非常简单了,可以参考。这里就不描述了。

相关文章