2024年4月29日发(作者:)

SSH原理及工作过程

一、SSH简介

SSH全称是Secure Shell,SSH协议是基于应用层的协议,为远程登录会

话和其他网络服务提供安全性的协议。SSH使用最多的是远程登录和传输文件,

实现此功能的传统协议都不安全(ftp,telnet等),因为它们使用明文传输数据。

而SSH在传输过程中的数据是加密的,安全性更高。

SSH协议具有以下一些优点:

数据传输采用密文的方式,保证信息交互的机密性;

用户的认证信息以密文的方式传输,可以有效地防止用户信息被窃听;

除了传统的密码认证,SSH服务器还可以采用多种方式对用户进行认证(如安

全性级别更高的公钥认证),提高了用户认证的强度;

客户端和服务器端之间通信使用的加解密密钥,都是通过密钥交互过程动态生成

的,可以防止对加解密密钥的暴力猜测,安全性级别比手工配置密钥的方式高;

为客户端提供了认证服务器的功能,可以防止“伪服务器欺骗”。

SSH协议采用客户端/服务器架构,分为传输层、认证层和连接层。

二、ssh工作过程

SSH的报文交互主要有以下几个阶段:

1、连接建立

SSH服务器端在22端口侦听客户端的连接请求,接收到客户端的连接建立

请求后,与客户端进行三次握手,建立起一条TCP连接,后续的所有报文交互都

在这个TCP连接之上进行。

2、版本协商

TCP连接建立之后,服务器和客户端都会向对端发送自己支持的版本号。服

务器端和客户端收到对端发送过来的版本后,与本端的版本号进行比较,双方都

支持的最高版本号即为协商出的版本号。

版本协商成功后,进入下一个阶段,即算法协商阶段。否则,中断连接。

3、算法协商

SSH协议报文交互需要使用多种算法:

用于产生会话密钥的密钥交换算法,包括diffie-hellman-group-exchangesha1、

diffie-hellman-group1-sha1 和diffie-hellman-group14-sha1 算法等。

用于数据信息加密的加密算法,包括 3des-cbc、aes128-cbc 和des-cbc 加密

算法等。

用于进行数字签名和认证的主机公钥算法,包括 RSA 和DSA 公钥算法等。

用于数据完整性保护的 MAC 算法,包括hmac-md5、hmac-md5-96、

hmacsha1和hmac-sha1-96 算法等。

由于各种客户端和服务器对这些算法的支持情况不一样,因此需要通过算法

协商阶段,使客户端和服务器协商出双方都支持的算法。

SSH协议的算法协商过程为:

(1) 客户端和服务器端都将自己支持的算法列表发送给对方;

(2) 双方依次协商每一种算法(密钥交换算法、加密算法等)。每种算法的

协商过程均为:从客户端的算法列表中取出第一个算法,在服务器端的列表中查

找相应的算法,如果匹配上相同的算法,则该算法协商成功;否则继续从客户端

算法列表中取出下一个算法,在服务器端的算法列表中匹配,直到匹配成功。如

果客户端支持的算法全部匹配失败,则该算法协商失败。

(3) 某一种算法协商成功后,继续按照上述方法协商其他的算法,直到所有

算法都协商成功;如果某一种算法协商失败,则客户端和服务器之间的算法协商

失败,服务器断开与客户端的连接。

4、密钥交换