什么是Telnet?与SSH的区别、端口连接测试的用法

如今几乎不再用于登录,但作为检测端口是否开放的工具,它依然活跃。

什么是Telnet——最早的远程终端连接协议

诞生于1969年的Telnet,是一种可以连接到网络另一端计算机的命令行(终端),让你像坐在那台电脑前一样进行操作的协议。Telnet是从互联网前身ARPANET时代就开始使用的历史悠久的协议,它的原理是把用户输入的按键原样发送到网络另一端的服务器,再把结果画面传回来,以此实现远程终端连接。可以说它是如今广泛用于远程服务器管理的SSH在概念上的前身。

默认23号端口与工作方式

Telnet默认使用TCP 23号端口,客户端与服务器建立连接后,之后所有的输入输出都会通过这条连接传输。Telnet客户端与服务器的23号端口建立TCP连接后,用户此后在键盘上输入的所有内容都会被实时发送到服务器,而服务器的响应(输出画面)也会原样返回给客户端。登录过程、命令执行结果等,全部通过这一条文本流传输。

为什么被SSH取代——明文传输带来的安全问题

Telnet在传输包括登录密码在内的所有数据时都不进行加密,因此通信路径中途很容易被直接截获。Telnet诞生的年代对网络窃听的考虑较少,因此包括用户名和密码在内的所有数据都以未加密的明文形式传输。随着人们意识到同一网络中的攻击者仅凭抓包工具就能直接窃取登录信息,从上世纪90年代后期开始,能够加密整个会话的SSH(安全外壳协议)逐渐成为远程连接的标准。

为什么至今仍在使用——作为端口连接测试工具

作为安全登录方式它已经退出历史舞台,但作为快速检测某个端口是否开放的简易诊断工具,如今依然被广泛使用。实际用Telnet登录的场景已几乎消失,但通过"telnet 服务器地址 端口号"命令快速确认该端口是否能建立TCP连接的用法,至今依然很常见。连接成功意味着该端口处于开放状态且未被防火墙拦截;如果连接被拒绝或没有响应,则可以理解为端口关闭,或路径中某处存在阻断。

在Windows上启用telnet命令的方法

较新版本的Windows默认关闭了Telnet客户端,需要在"启用或关闭Windows功能"中手动开启才能使用该命令。打开控制面板的"程序和功能",进入"启用或关闭Windows功能",在列表中勾选"Telnet 客户端"并点击确定,即可开始安装。安装完成后,就可以直接在命令提示符或PowerShell中使用telnet命令。Mac和Linux大多默认自带telnet命令,或者可以通过包管理工具轻松安装。

实际工作中用telnet检测端口是否开放的示例

常用于快速确认某项服务是否正常开放,比如邮件服务器的25号端口或Web服务器的80号端口。例如输入"telnet mail.example.com 25",如果连接成功并显示出服务器的问候信息(banner),就说明该邮件服务器的SMTP端口正常开放。反之,如果显示"无法连接"的提示,就需要检查是防火墙拦截了,还是服务本身已经关闭。不过需要注意,这只能用于确认连接状态,绝不应该用它进行实际登录或数据传输。

想进一步了解SSH的原理吗

SSH通过公钥加密对整个会话进行加密,从而取代了Telnet,即使通信被截获,也无法读取登录信息等内容。它还支持基于密钥的身份验证,而不仅仅依赖密码,这也是它成为安全管理远程服务器标准的原因。

想更全面地了解端口号吗

除了23号端口,还有成千上万个端口号按照惯例被分配给特定服务,比如80号用于网页流量、25号用于发送邮件等。提前熟悉几个常见的端口号,能让包括这里介绍的端口测试在内的网络故障排查变得容易得多。

常见问题

现在还能用Telnet登录管理服务器吗?

不建议这样做。因为Telnet会将包括登录信息在内的所有通信以未加密的明文形式传输,同一网络中的任何人只要截获数据包,就可能直接看到账号信息。远程服务器管理应始终使用SSH。

用telnet做端口测试时,连接刚建立就断开了。

如果连接刚建立就立即断开,很可能说明该端口本身是开放的,只是背后的服务(比如网页服务器、邮件服务器等)不理解Telnet协议本身的交互方式。即便如此,"连接本身成功"这一点也已经证明了该端口是开放的。