SSH 与 Telnet 有何不同?

已发表: 2023-03-15
计算机屏幕的特写,可以看到 PuTTY 配置选项。
Jordan Gloor / How-To Geek
TELNET 没有任何加密,所以一切都以明文传输。 SSH 是加密的,因此它是私密且安全的。 这就是应该优先使用 SSH 而不是 TELNET 的原因。

SSH 和 TELNET 都可以让您连接到远程联网计算机并像坐在它们前面一样使用它们。 那么这两个古老的协议之间有什么区别,使用 SSH 而不是 TELNET 真的总是有优势吗?

TELNET 和 SSH:起源故事

需要是发明之母。 系统管理员需要一种方法来访问和管理物理上位于其他地方的计算机。 如果管理员将自己放在计算机前不切实际或不方便,他们需要一种访问远程计算机的方法,使他们能够像在计算机中键入命令一样发出命令。

TELNET 是teletype over net work protocol 的缩写,于 1969 年开发,用于解决该问题。 只要远程计算机可以通过网络访问,它就允许管理员或任何其他授权人员连接到它并使用它,就像他们实际按下远程键盘的键一样。

SSH 是在 1995 年创建的,作为对 Telnet 和其他类似解决方案的直接响应。 这次的必要性是安全。 TELNET、rlogin、FTP 和那个时代的其他协议在设计时没有考虑或认为需要安全。

SSH 代表安全shell ,因此您可以看到安全性从一开始就是一个指导原则。 如今,SSH 几乎完全取代了 TELNET。

TELNET 是明文安全噩梦

TELNET 的一个大问题是它使用明文。 它不加密任何流量,包括用户名和密码。 它通过网络传输的任何内容都可以通过数据包嗅探和读取轻松捕获。 即使在本地网络上,这也是一个安全风险,除非您是唯一的用户。 任何用户都可以拦截 TELNET 流量并获取他们无权访问的登录凭据。

如果远程计算机不在现场,需要通过 Internet 建立连接才能访问它,则问题会无可估量地放大。 TELNET 是那个时代的产物,公平地说,作者几乎肯定不希望人们在 50 多年后,在今天截然不同的 IT 环境中使用它。

尽管 TELNET 在共同帮助我们走到今天的重要程序列表中名列前茅,但它不是我们在当今世界仍然应该使用的东西。

SSH 与 TELNET 有何不同?

从表面上看,TELNET 和 SSH 是对同一问题的两种解决方案。 它们都允许您访问远程计算机上的终端窗口并向其发出命令。 但是因为 SSH 的开发比 TELNET 晚得多,所以问题得到了更彻底的理解,并且答案也得到了更好的设计。

TELNET 的设计考虑了专用网络,但 SSH 的设计目的是应对公共网络,以及在传输数据和进行远程连接时维护隐私和安全的需要。

TELNET 使用端口 23,并且该端口号无法更改。 默认情况下,SSH 使用端口 22,但这可以配置和更改。 将 SSH 配置为使用不明显的端口号会使攻击者更难识别 SSH 端口。 如果可以识别 SSH 端口,则发起暴力攻击是一件微不足道的事情,在这种攻击中,通过自动化软件依次尝试从数据泄露中获取的数千个密码。

更好的是,SSH 可以完全免除密码。 它可以使用公钥加密对远程计算机进行身份验证。 密码根本不会传输,因为不需要将它们发送到远程计算机。 其数据加密和 SSH 密钥身份验证意味着 SSH 能够在互联网等不安全网络上提供安全连接和通信。

事实上,SSH 可用于对不同的服务进行身份验证,而不仅仅是运行 SSH 服务器的远程计算机。 例如,您可以使用 SSH 而不是密码访问 GitHub、GitLab 和 BitBucket 托管的 Git 存储库。

你应该为 Git 使用 HTTPS 还是 SSH?
相关你应该为 Git 使用 HTTPS 还是 SSH?

通过 TELNET 使用 SSH 的另一个优点是 SSH 可以进行反向 SSH 隧道。 这需要服务器与客户端计算机建立连接。 在本地用户想要连接到服务器之前,该连接将被忽略。

当客户端想要连接到服务器时,用户与自己的计算机建立 SSH 连接。 SSH 将连接沿着已经建立的连接发送到服务器。 这在从服务器到客户端的已加密连接中提供了一个专用隧道。

TELNET 的唯一优势是它使用的带宽更少。 但这不是带宽稀缺的 1969 年,SSH 也不是一个带宽大户。

SSH 也有它的问题

尽管 SSH 在安全性方面优于 TELNET,但我们必须记住它仍然是软件,软件可能存在错误。 这些错误可能导致网络犯罪分子可以利用的漏洞。 此外,加密标准和算法会随着时间的推移而变化,并被取代。 与所有基于加密的软件一样,随着 SSH 旧版本的老化,它们的安全性可能会降低。 这就是确保您使用最新版本的 SSH 很重要的原因。

大多数 Linux 计算机中使用的 SSH 版本是 OpenSSH,这是一种基于 OpenSSL 工具包和库的 SSH 实现。 2012 年,OpenSSL 库意外引入了一个漏洞,允许攻击者请求 SSL 服务器的响应,并指定在响应中包含多少数据。

当实际响应需要不超过 64 字节时,他们可以请求(比如说)64KB 的响应。 该数据中的第一个字节序列将是真实的、预期的响应,然后是 OpenSSL 最近使用的内存中发生的任何内容。 该数据中包含的内容是幸运的,但它可能包含敏感信息,例如会话 cookie 和密码,或其他允许攻击者获取私钥的信息。

2014 年,该漏洞被发现后便被称为 Heartbleed。 它很快就在软件中修复了。 然而,漏洞并没有在那时消失。 只有当所有运行易受攻击软件的计算机都安装了修复版本时,该漏洞才会完全无效。 换句话说,当计算机已经打好补丁。 由于许多管理员反应迟钝,因此固定软件的采用速度很慢。

同样令人担忧的是,从 2012 年引入漏洞到 2014 年发现并解决漏洞之间的两年时间。 在那两年里,每台运行易受攻击的 OpenSSL 版本的 SSH 服务器都处于危险之中。

公平地说,这几乎发生在十年前,从那时起已经有许多版本、改进、错误修复和代码审查。

相关:保护 SSH 服务器的最佳方法

您应该使用 SSH 还是 TELNET?

很难想出您今天需要使用 TELNET 的原因。 这与说在任何情况下都可以安全使用 TELNET 是不一样的。 在未连接到外部世界的独立网络中,并且您确定没有人会通过数据包嗅探您的流量,您可以使用 TELNET。 但没有理由这样做。 安全权衡是不合理的。

SSH 更安全、更灵活——这是使用 SSH 而不是 TELNET 的优势。 OpenSSH 实现对包括商业用途在内的所有用途都是免费的,并且适用于所有流行的操作系统。

相关:如何从 Windows、macOS 或 Linux 连接到 SSH 服务器