SSH基础原理
SSH简介
SSH
(Secure Shell,安全外壳协议)是一种用于在不安全网络上进行安全远程登录和实现其他安全网络服务的协议。
SSH
协议由三个组件构成:SSH传输层协议、SSH 用户认证协议、SSH连接协议。
详细介绍每个组件构成。
SSH传输层协议
SSH
传输层协议是一个安全传输协议。SSH
传输层通常建立在 TCP/IP
连接上,但也可以在任何其他可靠的数据流上建立。
SSH
传输层协议协商了所有的密钥交换算法、公钥算法、对称加密算法、消息认证算法等。
密钥交换算法:用于产生会话密钥。常见算法是 DH
。
公钥算法:用于进行数字签名和用户认证。常见的算法是 RSA 和 DSS
。
对称加密算法:用于会话的加密。
消息认证算法:用于数据完整性认证。常见的算法是 sha1
和 md5
。
SSH用户认证协议
SSH用户认证协议提供两种认证方法:
1.口令认证
2.公钥认证
口令认证:客户端通过用户名和密码登录到服务器,完成用户认证。
公钥认证:服务器通过公钥解密客户端的数字签名,完成用户认证。
SSH连接协议
SSH连接协议将加密的会话连接多路复用成若干个逻辑通道,它提供了交互式登录会话,远程执行命令,TCP/IP连接转发和X11连接转发等功能。所有通道都复用一个会话连接。
SSH连接协议在SSH传输层和SSH用户认证协议之上运行。
SSH工作原理
在整个通讯过程中,为实现SSH的安全连接,服务器端与客户端要经历如下五个阶段:
- 版本协商阶段
- 算法协商阶段
- 密钥交换阶段
- 用户认证阶段
- 会话交互阶段
下面介绍每个阶段具体工作。
1、版本协商阶段
客户端和服务器交互SSH版本协商保温,确定V1或V2版本。
2、算法协商阶段
一般情况下,服务器端迁就客户端的密钥算法。
3、密钥交换阶段
根据密钥交换算法,双方动态地产生会话密钥用于后续会话加密。会话密钥无法被第三者截获,安全可靠。
其中,p、g是质数。计算 YcY_cYc 的公式(散列算法):
YC=gXcmodP{Y_C=g^{X_c} mod P}YC=gXcmodP
用户认证阶段——口令认证
客户端发送携带用户名和口令的认证请求,服务器与本地用户数据进行匹配认证。
用户认证阶段——公钥认证
公钥认证的过程是客户端发送携带数字签名的认证请求,服务器通过公钥解密数字签名进行认证。客户端的私钥生成数字签名。
用户完成认证后,客户端向服务器发起建立通道请求,进行数据传输。进入到会话交互阶段。