ssh 登陆服务器原理
这里分两种情况,这两种情况都涉及到公钥加密的概念。
由于公钥加密概念作为基础就不在本文进行讨论了。
使用ssh对远程服务器进行密码登录发生了什么:
客户端通过ssh连接服务器
1. 首先服务器把自己的公钥发给客户端,客户端将自己的登录密码通过服务器发给自己的公钥进行加密。然后发送给服务器。
2. 服务器通过自己的私钥解密客户端发上来的用公钥加密的密码进行核对,如果正确就成功连接。
这个其实还挺好理解,而且为了防止中间人攻击,ssh在第一次连接的时候会提醒客户端这边,收到的服务器的公钥的hash值。拿到这个我们可以去和我们需要连接服务器的公钥对比,以确认身份。
客户端免密连接服务器
这是通常我们登录服务器使用的方法,而且不需要知道账户的密码。只需要将自己连接机器的公钥传到服务器就行了。流程如下
1. 客户端向服务器端发起链接。
2. 服务器端用客户端存在服务器的公钥加密一个256bit随机串发给客户端。
3. 客户端用私钥解密这个随机串然后和当前的session identifier HASH生成md5值发给server发给服务器。
4. server重新计算md5值,跟client进行比较,如果成功就链接登录。