深入了解 SSH 安全协议
SSH,全称为安全外壳协议,是一种在网络环境中实现安全远程计算机访问的关键工具。
在网络世界中,计算机之间的信息交流至关重要。为了实现这一目标,网络研究人员制定了标准化的通信规则,并开发了诸如 Telnet 等早期协议。这些协议允许用户远程控制其他计算机。
然而,早期的协议存在一个重大缺陷:安全性不足。这意味着在数据传输过程中,任何处于网络中间的人都有可能截获并读取传输的信息。为了解决这个问题,一种名为 SSH 的更安全协议应运而生,它在 90 年代中期被引入,旨在取代 Telnet。
如果你是软件开发人员或系统管理员,那么你很可能已经使用过 SSH。如果还没有,现在开始学习它也是不错的选择,因为它是一项基本且必不可少的技能。
什么是 SSH?
SSH,即 Secure Shell 或 Secure Socket Shell,是一种网络协议,它使我们能够安全地访问远程计算机(尤其是远程服务器)并与之通信。它通过强大的加密技术,被网络管理员和开发者广泛应用于管理远程系统、应用程序、执行命令以及共享文件。
SSH 的必要性
SSH 诞生于 1995 年,其主要目标是解决早期远程访问协议中存在的安全问题,如 rlogin, rsh 以及 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。