SSH vs. Telnet: 远程访问的更安全选择 [2023]
在远程连接的时代,用户和系统管理员必须使用工具来使远程活动安全、可靠和快速。
而且,当谈到远程连接方法时,有两个名字排在前面:SSH和Telnet。
是SSH还是Telnet?这篇文章将探讨哪个更适合远程访问。让我们在SSH vs. Telnet的比较中找出答案。
什么是远程访问?
远程访问使用户或管理员能够使用Internet从任何位置访问网络上的计算机或设备。使用它,他们可以进行不同的操作,包括文件传输、协作和保护应用程序流量。
远程访问对于组织的生存和发展至关重要。此外,管理员需要适当的远程访问来管理服务器、网络和应用程序,而不必亲自访问服务器位置。
什么是SSH?
安全外壳协议(SSH)是一种网络协议,它使不安全网络上的计算机能够以安全的方式相互通信。
建立安全连接后,用户或管理员可以登录远程机器并远程执行应用程序,或使用安全的端到端encrypted连接在网络上传输文件。
SSH是指实现SSH协议的技术和工具套件。为了使SSH安全,采用了多种技术,从公钥身份验证、加密数据通信到强密码身份验证等。
SSH开发背后的公司是Netscape Communications Corporation。然而,芬兰计算机科学家Tatu Ylonen创建了SSH的第一个设计。他在新创建的网络上发现了一个秘密密码嗅探器后开发了它。
SSH是如何工作的?
SSH取代了Telnet、rlogin、rsh等旧的远程连接协议。这些协议大多数都很受欢迎,但缺乏安全性。事实上,SSH非常好用,用户使用它而不依赖于文件传输协议,如远程复制(rcp)和文件传输协议(FTP)。
SSH使用客户端-服务器模型,其中SSH客户端连接到SSH服务器。
- SSH客户端是驻留在计算机或设备上的程序,它启动SSH协议。客户端向SSH服务器发送请求,并等待服务器接受请求。SSH客户端使用公钥加密来验证并确保它与正确的服务器连接。这种方法确保恶意用户不能冒充服务器并从客户端窃取重要信息。
- SSH服务器处理SSH连接并运行服务。为了接受传入请求,SSH服务器不断监听TCP端口22(默认情况下)。一旦接收到请求,它就会对其进行响应。SSH服务器还使用公钥身份验证来检查和认证客户端。只有在成功验证后,客户端才能访问主机系统。
客户端和服务器进行加密选择。它们可以禁用较弱的加密。此外,它支持多个连接,通过单个SSH连接打开多个通道,使您可以同时进行多任务(下载、编辑或运行程序)。
SSH语法如下:
$ ssh user_name@host
user_name是您用于连接主机的用户名。主机可以是IP或域名。
正如您所见,简化的SSH流程包括以下步骤:
- SSH客户端发起连接到特定的SSH服务器
- SSH服务器接收连接并将其公钥发送给客户端。
- 客户端将服务器的公钥保存在其主机文件中(以供将来连接)。
- 现在,服务器和客户端协商并建立连接参数。
SSH提供了一种强大的连接选项,具有出色的安全性和数据完整性保护。它还遵循IETF的标准化以实现更好的实施,并且已经保持完整15年。
如果您想对SSH进行深入了解,请查看 SSH RFC 4253 standardization document. 此外,还可以查看Geekflare对 understanding SSH 的看法。
什么是Telnet?
Telnet代表Teletype Network。它是另一种通过命令行界面提供远程连接的流行网络协议。与SSH类似,您可以使用它来进行远程控制和执行操作。然而,它缺乏SSH提供的安全性方面。
安全性的缺乏是因为它在1969年问世时,大多数通信是在安全的本地网络中进行的,与不安全的互联网相比较安全。
Telnet如何工作?
Telnet通过在客户端和服务器之间创建基于文本的终端到终端通信来工作。它使用一个八字节的连接的客户端-服务器模型。
一旦建立了连接,您可以在远程计算机上执行不同的操作,包括检查打开的端口,配置设备,编辑文件,甚至运行程序。
Telnet的语法是:
$ telnet hostname port
要了解有关Telnet的更多信息,请查看 Telnet Commands to Test and Troubleshoot Connection Issues。
何时何地应该使用SSH?
SSH主要用于:
- 远程系统管理
- 远程命令执行
- 保护应用程序的流量
- 文件传输
管理员还可以设置自动的SSH会话来处理重复的任务,例如网络备份创建,日志文件收集,定期执行维护等。
在任何远程连接操作中,尤其是在不安全的网络(特别是互联网)上,必须使用SSH。在本地网络上使用SSH也是一个很好的选择,因为您可能无法确定您的本地网络是否完全安全。
何时何地应该使用Telnet?
由于Telnet不安全,您应避免在不安全的网络上远程连接使用它。然而,这并不意味着Telnet是无用的。
您可以使用Telnet执行以下操作:
- 故障排除SSH(是的,您没看错。 😃)
- 故障排除FTP、SMTP和 web servers。
- 检查端口是否打开
- 访问可信任的互联网网络。
SSH与Telnet的比较
在本节中,我们将通过不同的标准来比较SSH和Telnet。如果您匆忙,可以查看SSH与Telnet的比较表。
SSH | Telnet | |
安全性 | 非常安全,客户端和服务器可以协商建立加密算法。 | 不安全,没有保护连接或Telnet数据包的机制。 |
身份验证 | SSH使用公钥加密进行身份验证。 | Telnet没有身份验证机制。它只是要求用户名/密码,而这些信息在传输过程中没有任何保护。 |
操作 | SSH默认使用TCP端口22。您可以更改为其他端口以防止黑客尝试未经授权的访问。 | Telnet默认使用端口23监听传入连接。您可以配置它以防止未经授权的访问。 |
模型 | 客户端-服务器模型。 | 客户端-服务器模型。 |
数据传输速度 | 技术上比Telnet慢,但在实际使用中几乎感觉不到。 | 由于没有安全协议,比SSH更快。 |
安全性
SSH是安全的。它通过适当的加密协议保护您的连接。然而,Telnet完全没有任何安全措施。
在SSH中,客户端和服务器可以协商连接参数,包括端到端的加密算法。这使得SSH连接尽可能安全,可以排除弱加密算法。
一旦客户端和服务器之间建立了TCP/UDP连接,就会尝试创建安全连接。
为了更好地了解SSH安全性的工作原理,让我们了解一下SSH包的内容。SSH数据包包含五个组件,包括:
- 包长度:4个字节;包的大小
- 填充量:1个字节;包的填充量
- 有效负载:实际传输的数据;大小可变
- 填充:实际的填充,而不是我们之前提到的大小。它是与有效负载相结合的随机字节,以使其更加加密。
- 消息认证码:用于验证包的真实性,以确保包的数据未被更改。
当SSH实现加密时,只有包长度和消息认证码可供阅读。客户端和服务器通过消息认证码协商连接参数。此外,SSH数据包可以使用不同的压缩算法进行压缩。
Telnet缺乏安全性。它执行不安全的身份验证来连接客户端和服务器。因此,任何恶意行为者都可以读取Telnet数据包并破坏连接。
身份验证
SSH是一种安全协议。它依靠公钥加密来验证客户端和服务器。在更技术性的术语中,SSH可以使用非对称或symmetric cryptographic algorithms来配对公钥和私钥。
另一方面,Telnet没有身份验证的保护。其身份验证过程要求输入帐户名和密码,然后连接。此外,用户名和密码在发送过程中没有任何安全保护,因此任何人都可以访问。
操作
就操作而言,SSH默认运行在TCP端口22上。另一方面,Telnet使用TCP端口23。因此,在不指定端口号的情况下使用SSH或Telnet协议时,命令将自动尝试连接到分别的22号和23号端口。
然而,这些端口是众所周知的,黑客可以利用它们进行未经授权的访问。
您可以更改不同端口上的SSH和Telnet协议以解决此问题。最好关闭常用端口,并选择1024到65535之间的端口。
在Telnet中,命令以网络虚拟终端(NVT)格式发送。Telnet服务器能够接收和理解这种格式。正如您所见,这里没有进行加密或认证。
至于SSH,一旦建立了客户端-服务器连接,就会生成一个会话并用会话密钥进行标识。此密钥将加密流量直到会话结束。此外,服务器需要验证客户端。它通过SSH密钥对生成来完成验证。验证完成后,将为安全的数据传输创建端到端加密通道。
模型
SSH和Telnet都使用客户端-服务器模型。这非常好,因为客户端-服务器模型带来了多个好处,包括:
- 如果需要,服务器可以添加更多资源,实现水平扩展。
- 客户端可以针对适当的数据输入进行优化。
- 在客户端和服务器之间分割应用处理。
速度和开销
要真正理解SSH和Telnet,我们必须了解它们的开销影响。一般来说,SSH的开销比Telnet更大,但在实际应用中你几乎不会注意到任何差异。
从技术上讲,Telnet和SSH在连接后1小时或连接时间超过1 GB后进行重新密钥。
至于带宽,SSH的开销较大,但对用户的影响很小。至于客户端和服务器的CPU开销,由于AES标准在SSH连接中的工作方式和实现方式,开销也很小。
简而言之,SSH和Telnet在视觉速度和开销上没有区别。然而,从技术上比较,SSH确实比Telnet多一些开销。
SSH和Telnet的用途
在本节中,我们将考察一些SSH和Telnet的用途。
SSH的用途
SSH的用途包括:
- 远程执行命令
- 安全访问远程机器资源
- 远程传输文件
- 远程交付软件更新
- 设置自动文件传输或进行手动传输
Telnet的用途
Telnet的用途包括:
- 故障排除SSH
- 故障排除FTP和Web服务器
- 检查端口是否打开
- 访问受信任的互联网网络
最后的思考:哪个更好?
SSH更好。它是一种现代化和更新的网络协议,可以使远程访问更加安全。到目前为止,尚未发现其中的安全漏洞。此外,它易于使用和设置。
另一方面,Telnet已经逐渐退出舞台。它现在已经近50年了。然而,在当前的场景下,它仍然有用,您可以使用它来故障排除SSH或检查端口是否打开。管理员可以使用Telnet来解决大多数网络问题。