SSH 的基本架构

传输层协议
SSH (Secure Shell) 的传输层协议通常运行在 TCP/IP 协议之上,但也可能被用于其他数据流传输,不涉及用户认证。传输层协议的主要作用是定义了一个加密的通信通道,为后续的用户认证协议和连接协议提供了基础。它提供了数据加密传输、数据完整性保护以及数据压缩功能,确保了数据在传输过程中的安全性和可靠性。SSH 传输层协议支持多种加密算法和密钥交换方式,如对称加密算法 AES、3DES 等,非对称加密算法 RSA、DSA 等,以及密钥交换算法 Diffie-Hellman 等。

用户认证协议
SSH 的用户认证协议运行在传输层协议之上,它会将传输层确定的会话 ID 作为本次数据传输的唯一标识。用户认证由服务器端率先向客户端发起认证请求,客户端从服务器端支持的认证算法中进行选择。常见的用户认证算法包括基于密码的认证、基于公钥的认证、基于主机的认证等。用户认证协议具有时效性和失败次数限制,以防止暴力破解攻击。一旦认证成功,SSH 会话就可以正式开始数据传输。

连接协议
SSH 的连接协议是建立在传输层协议和用户认证协议之上的,它提供了终端会话和转发连接等功能。终端会话和转发连接都是通过加密隧道实现的,连接协议可以将加密隧道复用分为多个逻辑通道,以供高层应用协议使用。连接协议提供了以下主要功能支持:
- Shell 会话:允许用户通过 SSH 连接远程主机并执行命令
- 远程命令执行:允许在远程主机上执行单个命令
- 转发 TCP/IP 连接:将本地 TCP 端口映射到远程主机的 TCP 端口
- 转发 X11 连接:允许在本地显示远程 X Window 应用程序
通过连接协议,SSH 可以实现安全的远程访问和文件传输等功能。
SSH 的工作流程
版本号协商阶段
SSH (Secure Shell) 协议的版本号协商阶段是整个 SSH 连接过程的第一步。在这个阶段中,客户端向服务器发起 TCP 初始连接请求,建立连接后,服务器会向客户端发送包含版本标志字符串的报文。客户端会解析该报文的数据包,判断使用服务器端还是客户端的协议版本号,并将决定使用的协议版本号回应给服务器端。服务器端会根据客户端回应的版本协议号决定是否协商成功。如果协商成功,SSH 连接过程就会进入下一阶段;如果协商失败,TCP 连接将被断开。版本号协商阶段确保了客户端和服务器端使用相同的 SSH 协议版本,为后续的密钥交换、算法协商等步骤奠定了基础。
认证阶段
认证阶段是 SSH 连接过程中的关键环节。在这个阶段,客户端会向服务器端发送认证请求,包括用户名、认证方法以及认证方法的相关信息。服务器端会根据客户端发送的信息进行匹配,如果认证失败,服务器端会发送失败通知和再次认证的方法列表。客户端会重复执行认证请求,直至认证成功或达到认证次数上限。认证阶段确保了只有合法用户才能访问服务器,是保证 SSH 连接安全的重要一环。常见的认证方法包括基于密码的认证、基于公钥的认证等。
数据传输阶段
数据传输阶段是 SSH 连接的最终阶段,也是 SSH 协议的核心功能所在。在这个阶段中,客户端会将命令请求加密后传输给服务器,服务器会基于之前协商阶段生成的会话密钥进行解密。服务器解密后,会将命令的执行结果加密后传输给客户端,客户端对执行结果进行解密并显示在终端上。在数据传输阶段,数据会被双向加密传输,确保了通信的机密性和完整性。SSH 协议的数据传输阶段支持多种功能,如远程命令执行、文件传输、端口转发等,为用户提供了安全的远程访问服务。
密钥和算法协商阶段
在密钥和算法协商阶段,客户端和服务器端会通过报文向对端发布各自支持的算法列表,包括公钥算法、加密算法、MAC 算法和压缩算法。客户端和服务器端会结合自身和对方支持的算法列表,得出最终使用的算法组合。之后,双方会利用 Diffie-Hellman 密钥交换算法交换参数,生成会话密钥和会话 ID。会话密钥将用于后续的数据加密传输,而会话 ID 则用于标识这个 SSH 会话。密钥和算法协商阶段确保了 SSH 连接的安全性,通过协商出双方都支持的最佳算法组合,并生成会话密钥用于加密数据传输。
会话请求阶段
当认证阶段通过后,客户端会向服务器发送会话请求。服务器会根据客户端的请求进行回应,如果回应 SSH_SMSG_SUCCESS,则表示会话请求成功,SSH 连接过程进入交互会话阶段;如果回应 SSH_SMSG_FAILURE,则表示会话请求失败。会话请求阶段是 SSH 连接过程中的一个过渡阶段,确保了客户端和服务器端就会话的建立达成一致,为后续的数据传输做好准备。
SSH 的安全验证
SSH (Secure Shell) 提供了两种级别的客户端身份验证方式,以确保远程连接的安全性:

基于密码的安全验证
- 使用账号和密码登录远程主机
- 所有传输的数据都会被加密,提高了数据传输的安全性
- 但无法防止"中间人"攻击,因为密码可能被截获或破解

基于密钥的安全验证
- 需要预先在远程服务器上放置一对密钥(公钥和私钥)
- 连接 SSH 服务器时,客户端会向服务器发送安全验证请求
- 服务器使用存储的公钥对客户端发送的数据进行解密和验证
- 验证成功后,服务器会使用客户端的公钥加密"质询"并发送给客户端
- 这种方式可以有效避免"中间人"攻击,因为即使攻击者截获了加密数据,也无法解密
基于密钥的安全验证比基于密码的安全验证更加安全可靠,因为密钥更难被破解或窃取。但需要预先配置密钥,操作相对复杂一些。
SSH 通过加密和身份验证机制,为远程连接和数据传输提供了安全保障,是实现安全远程访问的重要手段。在 SSH 中选择合适的身份验证方式对于确保系统安全至关重要。
SSH 无法防止的攻击
SSH (Secure Shell) 是一种加密网络协议,用于在不安全的网络中为网络服务提供安全的操作。虽然 SSH 可以有效防御许多攻击形式,但仍存在一些无法防御的攻击方式:

密码丢失
如果用户的密码被泄露或丢失,SSH 无法保证连接的安全性。攻击者可以使用获取的密码登录系统。因此,强密码和密码管理对于 SSH 安全至关重要。

IP 和 TCP 攻击
由于 SSH 基于 TCP/IP 协议运行,因此无法防御针对 TCP 和 IP 协议本身的攻击,如 TCP SYN flood 攻击、IP 欺骗等。这些攻击可能导致拒绝服务或连接中断。

流量分析攻击
虽然 SSH 可以加密数据内容,但攻击者仍可通过监控网络流量的数据量、通信地址以及通信时间等元数据信息,进行流量分析攻击。这种攻击可能泄露敏感信息,如通信双方的身份、通信模式等。

中间人攻击
如果攻击者能够成功伪造服务器的公钥并将其植入客户端,就可以实施中间人攻击。在这种情况下,SSH 无法保证通信的机密性和完整性。
因此,虽然 SSH 提供了强大的加密和身份验证功能,但仍需要采取其他安全措施来防御上述攻击,如强密码策略、入侵检测系统、防火墙等,以确保整体系统的安全性。
SSH 与其他远程连接协议的区别
安全性提升
SSH 被设计为旧有的不安全远程访问协议(如 Telnet 和远程 Shell)的安全替代品。这些旧协议在网络上以明文形式传输身份验证凭据(如密码),存在被第三方截获敏感信息的风险。相比之下,SSH 使用加密来保护连接内容,从而降低了这种风险。
客户端-服务器架构
SSH 支持客户端-服务器架构,SSH 客户端程序连接到 SSH 服务器(如 sshd)以建立安全连接。这使得 SSH 可用于各种远程访问和管理任务,包括远程登录、命令执行、文件传输和端口转发。
强大的身份验证
与旧协议不同,SSH 使用公钥加密来对远程服务器和可选的用户进行身份验证,提供了更强的安全保证。SSH 还支持其他安全功能,如受密码保护的私钥。
灵活性和可扩展性
总的来说,与早期远程访问协议相比,SSH 的主要优势在于使用加密保护连接、支持强大的身份验证方法,以及在实现安全远程访问和管理方面的灵活性。
SSH 的优势
SSH 提供了安全的身份验证和网络通信加密,取代了不安全的协议如 Telnet 和远程 Shell。它使用公钥加密技术来验证远程计算机,并在必要时允许它验证用户,从而降低了第三方获取密码和未经授权访问远程系统的风险。

安全性和加密
SSH 通过加密网络流量,确保了通信的机密性和完整性。它使用强大的加密算法,如 AES 和 Blowfish,有效防止了窃听和中间人攻击。此外,SSH 还提供了密钥交换机制,确保了密钥的安全性。

多功能性
SSH 不仅支持远程登录,还支持在远程主机上执行命令、设置自动(无密码)登录、使用 SFTP 进行安全文件传输以及端口转发。这种多功能性使得 SSH 成为一种非常灵活和强大的工具。

跨平台兼容性
SSH 与大量操作系统兼容,包括类 Unix 系统和 Windows。这种广泛的兼容性使得 SSH 成为一种通用的安全通信解决方案,可以在不同环境中使用。

SFTP 优势
与 SCP 文件传输协议相比,SFTP 提供了更多功能,如恢复中断的传输、目录列表和远程文件删除,使其更像一种远程文件系统协议。SFTP 还被设计为比 SCP 更加平台独立。
SSH 的应用场景
SSH 是一种广泛应用于各种平台的安全协议,主要应用场景包括:

远程登录和命令行执行
SSH 可以安全地访问和操作远程计算机,通过加密认证令牌(如用户名和密码)来替代不安全的 Telnet 和远程 shell (rsh) 协议。它为远程登录和在远程主机上执行单个命令提供了安全途径。

自动无密码登录
SSH 允许设置自动(无密码)登录远程服务器,例如使用 OpenSSH。这种方式可以避免每次登录时都需要输入密码,提高了效率和便利性。

安全文件传输和管理
SSH 文件传输协议 (SFTP) 和安全拷贝协议 (SCP) 为文件传输和管理提供了安全的替代方案,可以高效地备份、复制和镜像文件。

端口转发和网络隧道
SSH 还可用于端口转发和网络流量隧道,但不应与完整的 VPN 混淆。通过 SSH 隧道,可以绕过防火墙限制,访问受限的网络资源。

与其他工具集成
SSH 可与 rsync 等工具集成,实现高效的远程文件同步。它还可与版本控制系统(如 Git)集成,为代码管理提供安全通道。
SSH 的配置方法
SSH (Secure Shell) 的配置方法主要依赖于公钥加密技术。SSH 使用自动生成的公钥-私钥对来加密网络连接,并通过密码认证用户身份。当远程主机上存在公钥,而本地端拥有匹配的私钥时,就无需再次输入密码即可建立安全连接。为增强安全性,私钥本身也可以使用密码短语进行加锁保护。私钥的存储路径可以在命令行中指定,ssh-keygen 工具则用于生成这对公私钥。通过这种基于公钥加密的配置方式,SSH 能够为远程登录和文件传输等操作提供安全可靠的加密通道。
欢迎加入亚马逊云科技培训中心
欢迎加入亚马逊云科技培训中心
-
快速上手训练营
-
账单设置与查看
-
动手实操
-
快速上手训练营
-
第一课:亚马逊云科技简介
本课程帮助您初步了解云平台与本地环境的差异,以及亚马逊云科技平台的基础设施和部分核心服务,包括亚马逊云科技平台上的弹性高可用架构,架构设计准则和本地架构迁移上云的基本知识。
亚马逊云科技技术讲师:李锦鸿第二课:存储与数据库服务
您将在本课程中学习到亚马逊云科技上的三个存储服务分别是什么。我们也将在这个模块中为您介绍亚马逊云科技上的关系型数据库服务 Amazon Relational Database Service (RDS)。
亚马逊云科技资深技术讲师:周一川第三课:安全、身份和访问管理
在这个模块,您将学习到保护您在亚马逊云科技上构建的应用的安全相关知识,责任共担模型以及身份和访问管理服务, Identity and Access Management (IAM) 。同时,通过讲师演示,您将学会如何授权给 EC2 实例,允许其访问 S3 上的资源。
亚马逊云科技技术讲师:马仲凯 -
账单设置与查看
-
-
动手实操
-
快速注册账号 享用免费套餐
跟随注册步骤详解,三分钟快速创建账号,领取免费权益
打开中国区账号注册页面
01 填写您 注册账号的邮箱,点击“继续”
02 查看您的 注册账号邮箱
注: 发件箱 no-reply@register.signin.amazonaws.com.cn
03 输入 邮箱中收到的验证码,点击“继续”
注: 该链接中的内容显示语言是与您的网页浏览器设置相一致的,您可以根据需要自行调整语言栏。

填写用户名密码
.04e59cc081d6b1b4de2e80dca972273ad0cd7ace.jpg)
填写账号联系人以及公司信息
01 填写公司联系人 姓名全称
02 填写公司联系人的 联系电话
03 填写 公司名称
注: 公司名称请务必与您所提供的营业执照公司名称保持一致
04 填写 公司办公地址
注: 省份/自治区/直辖市 - 城市 - 区 - 街道门牌号以及楼层信息 - 邮政编码
05 请选择 是否需要发票
注: *附件-申请发票流程 供您参考
06 点击查看 客户协议 勾选方框表示您已阅读,并同意客户协议的条款
.dcb511571e7913a6581f0ae803797a01c918ac61.jpg)
企业信息验证
01 在此上传 企业注册执照
02 请填写网络安全负责人的 姓名
注: 该字段务必与您下方提供的身份证号匹配或与证件上的姓名保持一致
03 请填写网络安全负责人的 联系方式
注: 有效的电子邮件地址 - 有效的中国内地 手机号码 - 座机号码(如无座机,请填写正确有效的手机号码)
04 在此上传网络安全负责人的 身份证件
注: 当您选择证件类型为“身份证”时,您需要填写正确的身份证号码,选择其他证件类型时,您需要上传证件扫描稿
.8252245bf937985f0b90aaa376899e8932e71a49.jpg)
手机验证与支持计划
.7122fd576282aebfbd9ed8927a918a378c59550d.jpg)