SSH(Secure Shell 的缩写)是一种网络协议,用于加密两台计算机之间的通信,并且支持各种身份验证机制。实务中,它主要用于保证远程登录和远程通信的安全,任何网络服务都可以用这个协议来加密。需要注意的是,SSH 是一种协议,而通常我们说的是实现了这种协议的软件,例如:OpenSSH。
- 客户端发起链接请求
- 服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)
- 客户端生成密钥对
- 客户端用自己的公钥异或会话ID,计算出一个值Res,并用服务端的公钥加密
- 客户端发送加密后的值到服务端,服务端用私钥解密,得到Res
- 服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)
- 最终:双方各自持有三个密钥,分别为自己的一对公私钥,以及对方的公钥,之后的所有通讯都会被加密
SSH 加密通讯原理: