SSH 含义 | SSH 协议定义

2025年3月17日 | 阅读 8 分钟

SSH 是 安全外壳(Secure Shell)或安全套接字外壳(Secure Socket Shell) 的缩写。它是一种加密网络协议,允许两台计算机在不安全的网络(如互联网)上进行通信和共享数据。它用于登录远程服务器以执行命令以及在计算机之间传输数据。

SSH 协议由 SSH Communication Security Ltd. 开发,用于安全地与远程计算机通信。

安全通信通过强大的密码身份验证和通过不安全通道的公钥加密通信提供。它用于替换不安全的远程登录协议,如 Telnet、rlogin、rsh 等,以及不安全的 文件传输协议 FTP

其安全功能被网络管理员广泛用于远程管理系统和应用程序。

SSH 协议保护网络免受各种攻击,例如 DNS 欺骗、IP 源路由和 IP 欺骗。

可以理解一个简单的例子,比如你想给朋友寄一个包裹。没有 SSH 协议,任何人都可以打开并阅读它。但是如果你使用 SSH 协议发送,它将被加密并用公钥保护,只有收件人才能打开它。

SSH 之前

SSH Meaning

SSH 之后

SSH Meaning

SSH 协议的用途

SSH 协议的常用用途如下所示

  • 它为用户和自动化流程提供了安全访问。
  • 它是通过不安全网络在系统之间安全传输文件的简便方法。
  • 它还向用户发出远程命令。
  • 它帮助用户管理网络基础设施和其他关键系统组件。
  • 它用于登录远程系统(主机)的 shell,取代了 Telnet 和 rlogin,并用于在主机上执行单个命令,取代了 rsh
  • 它与 rsync 工具结合使用,以完整、安全、高效地备份、复制和镜像文件。
  • 它可以用于端口转发。
  • 通过使用 SSH,我们可以设置到远程服务器的自动登录,例如 OpenSSH。
  • 通过 SSH 客户端,我们可以通过加密的代理连接安全地浏览网页,支持 SOCKS 协议。

SSH 如何工作?

SSH 协议在 客户端-服务器 模型下工作,这意味着它将一个安全 shell 客户端应用程序(显示会话的终端)与 SSH 服务器(执行会话的终端)连接起来。

如上所述,它最初是为了取代 Telnet、rlogin 等不安全的登录协议而开发的,因此它执行相同的功能。

SSH Meaning

SSH 的基本用途是连接远程系统以进行终端会话,为此,使用以下命令

上述命令允许客户端使用用户名 UserName 连接到名为 server.test.com 的服务器。

如果我们是第一次连接,它会提示远程主机的公钥指纹并询问是否连接。将出现以下消息

要继续会话,我们需要单击“是”,否则单击“否”。如果我们单击“是”,那么主机密钥将被存储在本地系统的 known_hosts 文件中。密钥默认包含在隐藏文件中,该文件位于主目录下的 /.ssh/known_hosts。一旦主机密钥存储在此隐藏文件中,就不需要进一步的批准,因为主机密钥将自动验证连接。

SSH 协议的历史

SSH 有 3 个版本,如下所示

  • 1.x 版本: SSH 的第一个版本于 1995 年发布,由芬兰赫尔辛基理工大学的研究员 Tatu Ylönen 设计。它被称为 SSH-1。此版本存在一些问题,因此已被弃用。
  • 2.x 版本: 第二个版本称为 SSH-2,是 SSH 协议的当前版本。2006 年,它被互联网工程任务组 (IETF) 采纳为标准轨道规范。此版本与 SSH-1 协议不兼容。与 SSH-1 相比,它具有更好的安全功能。
  • 1.99 版本: 版本 1.99 被指定为 2.1 的 proto 版本。它不是实际版本,而是标识向后兼容性的一种方式。

SSH 协议的架构

SSH 架构由三个清晰分离的层组成。这些层是

  1. 传输层
  2. 用户认证层
  3. 连接层

SSH 协议架构是一个开放式架构,因此它提供了极大的灵活性,并使 SSH 能够用于除安全 shell 之外的许多其他用途。在该架构中,传输层类似于传输层安全 (TLS)。用户认证层可以与自定义认证方法一起使用,连接层允许将不同的辅助会话多路复用到一个 SSH 连接中。

传输层

传输层TCP/IP 协议栈的顶层。对于 SSH-2,此层负责处理初始密钥交换、服务器身份验证、加密设置、压缩和完整性验证。它作为发送和接收明文数据包的接口,数据包大小可达 32,768 字节。

用户认证层

顾名思义,用户认证层负责处理客户端认证并提供各种认证方法。认证在客户端进行,因此当出现密码提示时,通常是针对 SSH 客户端而不是服务器,服务器响应这些认证。

此层包含各种认证方法,这些方法是

  • 密码: 密码认证是一种直接的认证方式。它包含更改密码的功能,以便于访问。但并非所有应用程序都使用它。
  • 公钥: 公钥是一种基于公钥的认证方法,支持 DSA、ECDSA 或 RSA 密钥对。
  • 键盘交互式: 它是多功能认证方法之一。在这种方法中,服务器会发送一个提示,要求输入信息,客户端则将用户输入的信息回传。它用于提供一次性密码或 OTP 认证。
  • GSSAPI: 在此方法中,认证由外部方法执行,例如 Kerberos 5 或 NTLM,这些方法为 SSH 会话提供单点登录功能。

连接层

连接层定义了提供 SSH 服务的各种通道。它定义了通道、通道请求和全局请求的概念。一个 SSH 连接可以同时托管不同的通道,并且还可以同时在两个方向上传输数据。通道请求在连接层中用于传递带外通道特定数据,例如终端窗口的大小更改或服务器端进程的退出代码。连接层的标准通道类型是

  • shell: 用于终端 shell、SFTP 和 exec 请求。
  • direct-tcpip: 用于客户端到服务器的转发连接。
  • forwarded-tcpip: 用于服务器到客户端的转发连接。

使用 SSH 协议可以传输什么?

SSH 协议可以传输以下内容

  • 数据
  • 文本
  • 命令
  • 文件

文件通过 SFTP(安全文件传输协议)传输,它是 FTP 的加密版本,可提供安全性以防止任何威胁。

SSH 与 Telnet 的区别

  • Telnet 是第一个用于在远程主机上创建和维护终端会话的互联网应用程序协议。
  • SSH 和 Telnet 都具有相同的功能。但主要区别在于,SSH 协议通过公钥加密进行保护,该加密在建立终端会话时会验证终端。另一方面,Telnet 不为用户身份验证提供任何身份验证,因此安全性较低。
  • SSH 发送加密数据,而 Telnet 发送纯文本数据。
  • 由于高安全性,SSH 是公共网络的首选协议,而由于安全性低,Telnet 适用于私有网络。
  • SSH 默认运行在端口号 22 上,但可以更改,而 Telnet 使用端口号 23,专门用于局域网。

SSH 加密技术

为了实现安全传输,SSH 在传输的各个点使用三种不同的加密技术。这些技术是

  1. 对称加密
  2. 非对称加密
  3. 哈希

对称加密

在对称加密技术中,只能使用一个密钥来加密和解密发送和接收的消息。此技术也称为 共享密钥加密,因为两个设备都使用相同的密钥来加密它们发送的数据并解密接收到的数据。

此技术可以加密整个 SSH 连接,以防止中间人攻击。在此技术中,在初始密钥交换时会出现一个问题。根据此问题,如果第三者在密钥交换期间存在,他们可能会知道密钥并阅读整个消息。

密钥交换算法 用于解决此问题。使用此算法,可以安全地交换密钥而不会被拦截。

需要非对称加密来实现密钥交换算法。

非对称加密

在非对称加密中,使用两个不同的密钥进行加密和解密,即私钥和公钥。私钥仅对用户保密,不能与其他用户共享,而公钥则公开共享。公钥保存在 SSH 服务器上,而私钥保存在本地 SSH 客户端上;这两个密钥形成一个密钥对。用公钥加密的消息只能用相应的私钥解密。

这是一种更安全的技术,因为即使第三方获得了公钥,他们也无法解密消息,因为他们不知道私钥。

非对称加密不加密整个 SSH 会话。相反,它主要用于对称加密的密钥交换算法。在此过程中,在建立连接之前,两个系统(客户端和服务器)会临时生成公钥-私钥对,然后共享它们的私钥以生成共享的密钥。

在建立安全的对称连接后,服务器使用公钥将其传输给客户端进行身份验证。只有客户端拥有私钥才能解密数据,从而建立 SSH 会话。

哈希

在 SSH 中,使用单向哈希作为加密技术,这是密码学的另一种形式。哈希技术与上述两种方法不同,因为它不是指解密。它生成信息的签名或摘要。SSH 使用 HMAC(基于哈希的消息认证)来确保消息完整且未被修改地到达。

在此技术中,每条传输的消息都必须有一个 MAC,它使用三个组件:对称密钥、数据包序列号和消息内容。这三个组件构成一个哈希函数,生成一个没有意义的字符串,并将此字符串发送到主机。主机也拥有相同的信息,因此它们也生成一个哈希函数,如果生成的哈希与接收到的哈希匹配,则表示消息未被篡改。


下一个话题UTP 与 STP