什么是 SSH 及其工作原理?

深入了解 SSH 安全协议

SSH,全称为安全外壳协议,是一种在网络环境中实现安全远程计算机访问的关键工具。

在网络世界中,计算机之间的信息交流至关重要。为了实现这一目标,网络研究人员制定了标准化的通信规则,并开发了诸如 Telnet 等早期协议。这些协议允许用户远程控制其他计算机。

然而,早期的协议存在一个重大缺陷:安全性不足。这意味着在数据传输过程中,任何处于网络中间的人都有可能截获并读取传输的信息。为了解决这个问题,一种名为 SSH 的更安全协议应运而生,它在 90 年代中期被引入,旨在取代 Telnet。

如果你是软件开发人员或系统管理员,那么你很可能已经使用过 SSH。如果还没有,现在开始学习它也是不错的选择,因为它是一项基本且必不可少的技能。

什么是 SSH?

SSH,即 Secure Shell 或 Secure Socket Shell,是一种网络协议,它使我们能够安全地访问远程计算机(尤其是远程服务器)并与之通信。它通过强大的加密技术,被网络管理员和开发者广泛应用于管理远程系统、应用程序、执行命令以及共享文件。

SSH 的必要性

SSH 诞生于 1995 年,其主要目标是解决早期远程访问协议中存在的安全问题,如 rloginrsh 以及 Telnet

Telnet 代表 Teletype Network,诞生于 1969 年。它是一种简单的命令行工具,允许用户通过计算机访问远程服务器,并执行各种操作。用户可以如同直接坐在服务器前一样,发送命令,执行程序,创建目录,传输文件以及启动和停止服务。然而,Telnet 的数据传输方式是以明文形式进行的。

当数据在网络中传输时,它会经过多个节点。其中一些节点可能不安全,导致传输的数据被拦截甚至被篡改。因此,在早期,所有通信都以明文形式进行,这使得通过互联网传输的数据很容易被截获和读取。由于消息未加密,敏感信息容易泄露。

因此,明文协议被认为是非常不安全的,永远不应该用于传输敏感数据,如密码和机密信息。SSH 的出现,被认为是替代传统远程访问网络协议的更安全方案。

SSH 的工作原理

SSH 采用客户端-服务器架构,通过建立 SSH 客户端和 SSH 服务器之间的连接来确保安全通信。默认情况下,SSH 服务器监听标准的 TCP 端口 22,但为了提高安全性,你可以更改这个端口。

SSH 使用公钥加密技术来进行客户端和服务器之间的身份验证。此外,该协议还使用强大的对称加密和散列算法来进行消息交换,以确保隐私和数据完整性。

Linux 系统因其安全性和可靠性而成为远程服务器的首选操作系统。许多运行 Linux 的服务器已经稳定运行多年,没有出现过多次故障或需要重启。

大多数 SSH 会话(我们访问远程服务器的时间段)通常只包含以下两个主要步骤:

  • 验证
  • 命令执行

SSH 服务器可以使用多种方法对客户端进行身份验证。

以下是两种常见的身份验证方法:

基于密码的身份验证是 OpenSSH 安装客户端的默认方法。虽然它比较基础,但安全程度不高。即使密码被安全地发送到服务器,现代暴力破解攻击也可能绕过身份验证。

基于密钥的身份验证通过生成 SSH 密钥对来提高系统安全性,这是一种更可靠和安全的替代方案。

当服务器成功验证客户端后,双方之间便会建立起安全连接。

使用 SSH 连接远程服务器

对于 Mac 或 Linux 用户,你可以直接在终端中输入并执行 SSH 命令,因为 OpenSSH 已经默认安装在这些系统中。

如果你是 Windows 用户,你需要安装第三方终端模拟器客户端来执行 SSH 命令。 PuTTY 是 Windows 系统中最常用的 SSH 客户端之一。

要使用 SSH 连接到远程服务器,你至少需要了解以下两件事:

基本 SSH 命令的语法如下:

$ ssh <用户名> @ <主机名或IP> -p <端口号>

其中,用户名指的是你要连接的远程计算机的用户名(而不是本地计算机上的用户名),主机名或IP地址则是远程服务器的地址。

让我们以连接到 OverTheWire 网站的服务器为例。这是一个免费的兵棋推演挑战网站。

现在,我们连接到 Bandit 挑战。这是一个教导如何使用 SSH 登录的在线挑战。

证书:

用户名和密码:bandit0
主机和端口:bandit.labs.overthewire.org,2220

当你输入以下命令并按下回车键时:

$ ssh [email protected] -p 2220

系统会提示你输入密码以进行身份验证。现在,输入密码并按回车键:

如果密码输入正确,你将成功登录到远程服务器,你的终端将会如上图所示。

现在,你可以在远程计算机的终端上输入并执行命令,从而完成你需要执行的操作。

当你想要结束 SSH 会话时,输入 exit 命令:

$ exit


当你成功退出 SSH 会话时,你会收到一条消息 “连接已关闭”。

总结

SSH 之所以如此流行,主要原因在于服务器和客户端之间的所有通信都是加密的。

许多人认为使用 SSH 很复杂,而且不容易理解其工作原理。但实际上,它比你想象的要简单得多。现在,你已经对 SSH 有了基本的了解,包括它的工作原理、背后的安全机制以及它在通信中的重要作用。

接下来,你可以探索更多关于系统管理员的资源,进一步学习和应用 SSH。