首页  »  云计算知识  »  什么是 SSH

什么是 SSH?

SSH 最初是 UNIX 系统上的程序,之后扩展到其他操作平台,能够解决网络安全漏洞问题。SSH 通过提供加密、身份认证以及完整性保护支持,为不安全网络提供较强的安全性,防止密码分析和协议攻击,有效避免远程传输过程中信息泄露问题。

新用户享受中国区域 12 个月免费套餐

什么是SSH?

首页  »  云计算知识  »  什么是 SSH

什么是SSH?

什么是SSH?

SSH 最初是 UNIX 系统上的程序,之后扩展到其他操作平台,能够解决网络安全漏洞问题。SSH 通过提供加密、身份认证以及完整性保护支持,为不安全网络提供较强的安全性,防止密码分析和协议攻击,有效避免远程传输过程中信息泄露问题。

新用户享受中国区域 12 个月免费套餐

SSH 的基本架构

SSH 的基本架构

SSH 由传输层协议( The Transport Layer Protocol )、用户认证协议( The User Authentication Protocol )、连接协议( The Connection Protocol )三个协议组成,同时 SSH 中还会为高层网络安全应用协议提供扩展支持。其中,传输层协议提供服务器认证、数据压缩、数据保密性及信息完整性等支持;用户认证协议为服务器进行客户端身份认证;连接协议将加密通道复用成若干个逻辑通道。

SSH的基本架构_传输层协议

传输层协议

传输层协议通常运行在 TCP/IP 上,也可能被用在其他数据流上,不执行用户认证。传输层协议定义了传输的加密通道,是其他两个协议的基础,提供了数据加密传输、数据完整性保护以及数据压缩功能。

SSH的基本架构_用户认证协议

用户认证协议

用户认证协议运行在传输层协议之上,会将传输层确定的会话 ID 作为本次数据传输的唯一标识。用户认证由服务器端率先向客户端发起,客户端从服务器端支持的认证算法中进行选择。用户认证协议具有时效性和失败次数限制,认证成功后会开始执行传输。

SSH的基本架构_连接协议

连接协议

连接协议是建立在传输层协议和用户认证协议之上,终端会话和转交连接都是隧道,通过将加密隧道复用分为多个逻辑通道,以供高层应用协议使用。连接协议提供 Shell 会话、远程命令执行、转发 TCP/IP 连接以及转发 X11 连接等功能支持。

SSH的基本架构_传输层协议

传输层协议

传输层协议通常运行在 TCP/IP 上,也可能被用在其他数据流上,不执行用户认证。传输层协议定义了传输的加密通道,是其他两个协议的基础,提供了数据加密传输、数据完整性保护以及数据压缩功能。

SSH的基本架构_用户认证协议

用户认证协议

用户认证协议运行在传输层协议之上,会将传输层确定的会话 ID 作为本次数据传输的唯一标识。用户认证由服务器端率先向客户端发起,客户端从服务器端支持的认证算法中进行选择。用户认证协议具有时效性和失败次数限制,认证成功后会开始执行传输。

SSH的基本架构_连接协议

连接协议

连接协议是建立在传输层协议和用户认证协议之上,终端会话和转交连接都是隧道,通过将加密隧道复用分为多个逻辑通道,以供高层应用协议使用。连接协议提供 Shell 会话、远程命令执行、转发 TCP/IP 连接以及转发 X11 连接等功能支持。

SSH 的工作流程

SSH 的工作流程

SSH的工作流程

版本号协商阶段

版本号协商阶段,由客户端向服务器发起 TCP 初始连接请求,建立连接后,服务器向客户端发送包含版本标志字符串的报文。客户端解析该报文的数据包,判断使用服务器端还是客户端的协议版本号,并将决定使用的协议版本号回应给服务器端。服务器端根据版本协议号决定是否协商成功,协商成功进入下一阶段,协商失败则 TCP 连接断开。

SSH的工作流程

密钥和算法协商阶段

密钥和算法协商阶段,客户端和服务器端通过报文向对端发布算法列表,算法列表中包含了各自支持的公钥、加密、MAC 及压缩的算法。客户端和服务器端结合自身和彼此支持的算法列表得出最终使用的算法,利用 DH 交换参数,生成密钥和会话 ID。

SSH的工作流程

认证阶段

认证阶段由客户端向服务器端发送认证请求,服务器端根据客户端发送的用户名、认证方法以及认证方法的相关信息进行匹配。如果认证失败,服务器端会发送失败通知和再次认证的方法列表。客户端会重复执行认证请求,直至认证成功或达次数上限。

SSH的工作流程

会话请求阶段

认证阶段通过后,客户端向服务器发送会话请求。服务器根据客户端请求进行回应,如服务器回应 SSH_SMSG_SUCCESS,则 SSH 进入交互会话阶段,如回应 SSH_SMSG_FAILURE,则表示请求失败。

SSH的工作流程

数据传输阶段

数据传输阶段,客户端将命令请求加密后传输给服务器,服务器基于协商阶段生成的秘钥进行解密。服务器解密后,将命令的执行结果传输给客户端,客户端对执行结果进行解密并显示在终端。在这个阶段中,数据将被双向传输。

SSH的工作流程

版本号协商阶段

版本号协商阶段,由客户端向服务器发起 TCP 初始连接请求,建立连接后,服务器向客户端发送包含版本标志字符串的报文。客户端解析该报文的数据包,判断使用服务器端还是客户端的协议版本号,并将决定使用的协议版本号回应给服务器端。服务器端根据版本协议号决定是否协商成功,协商成功进入下一阶段,协商失败则 TCP 连接断开。

SSH的工作流程

密钥和算法协商阶段

密钥和算法协商阶段,客户端和服务器端通过报文向对端发布算法列表,算法列表中包含了各自支持的公钥、加密、MAC 及压缩的算法。客户端和服务器端结合自身和彼此支持的算法列表得出最终使用的算法,利用 DH 交换参数,生成密钥和会话 ID。

SSH的工作流程

认证阶段

认证阶段由客户端向服务器端发送认证请求,服务器端根据客户端发送的用户名、认证方法以及认证方法的相关信息进行匹配。如果认证失败,服务器端会发送失败通知和再次认证的方法列表。客户端会重复执行认证请求,直至认证成功或达次数上限。

SSH的工作流程

会话请求阶段

认证阶段通过后,客户端向服务器发送会话请求。服务器根据客户端请求进行回应,如服务器回应 SSH_SMSG_SUCCESS,则 SSH 进入交互会话阶段,如回应 SSH_SMSG_FAILURE,则表示请求失败。

SSH的工作流程

数据传输阶段

数据传输阶段,客户端将命令请求加密后传输给服务器,服务器基于协商阶段生成的秘钥进行解密。服务器解密后,将命令的执行结果传输给客户端,客户端对执行结果进行解密并显示在终端。在这个阶段中,数据将被双向传输。

SSH 的安全验证

SSH 的安全验证

SSH 提供密码和密钥两种级别的客户端验证方式。第一种级别是基于密码的安全验证,通过账号和密码可以登录远程主机,并且传输的所有数据都会被加密,无法防止“中间人”攻击。第二种级别是基于密钥的安全验证,将创建的一对密钥放置在需要访问的服务器上,连接 SSH 服务器时,客户端会向服务器发生安全验证请求,服务器通过对密钥进行对比验证。密钥验证成功后服务器会使用公有密钥加密“质询并给发送给客户端,可以有效避免“中间人”攻击。

SSH 无法防止的攻击

SSH 无法防止的攻击

SSH 可以有效防止因窃听而导致的信息泄露,面对名字服务和 IP 伪装、连接劫持、“中间人”攻击以及插入攻击等攻击方式也可有效防御。但无法防止以下形式的攻击:密码丢失、IP 和 TCP 攻击以及流量分析。当用户密码丢失时,SSH 无法保证安全性。SSH 具有隐私性、安全性的特性,可以将攻击限制在一定范围内,但 SSH 基于 TCP 运行的,所以无法防止来自 TCP 和 IP 缺陷的攻击。另外,攻击者可以通过监控网络数据通信的数据量、通信地址以及通信时间等信息进行拒绝服务攻击,SSH 也无法防止这种形式的攻击。

亚马逊云科技热门云产品

亚马逊云科技热门云产品

Amazon EC2

安全并且可以灵活调整大小的云服务器

Amazon ECS

高度安全、可靠且可扩展的容器运行方式

Amazon RDS

托管式关系数据库服务

Amazon Secrets Manager

轻松轮换、管理和检索数据库凭证、API 密钥和其他密钥

欢迎加入亚马逊云科技培训中心

从 0 到 1 轻松上手云服务,获取更多官方开发资源及培训教程

准备好体验亚马逊云科技提供的云服务了吗?

新用户享受中国区域 12 个月免费套餐