梗概
- 客户端用私钥将本次会话与自己的身份进行签名, 服务器使用公钥进行验证
- 一对公私钥表示一位用户的身份
- 私钥加密出来的签名数据表示一次会话
- 会话包含走双方的信息
- 会话的双方中, 只有用户是固定的, 服务器的身份是不定的
流程
- 预备步骤,客户端通过ssh-keygen生成自己的公钥和私钥。
- 第一步,手动将客户端的公钥放入远程服务器的指定位置。
- 第二步,客户端向服务器发起 SSH 登录的请求。
- 第三步,服务器收到用户 SSH 登录的请求,发送一些随机数据给用户,要求用户证明自己的身份。
- 第四步,客户端收到服务器发来的数据,使用私钥对数据进行签名,然后再发还给服务器。
- 第五步,服务器收到客户端发来的加密签名后,使用对应的公钥解密,然后跟原始数据比较。如果一致,就允许用户登录。