深入理解 Telnet:网络连接的诊断利器
Telnet 是一种历史悠久的网路协议,它允许用户以虚拟方式连接到远程计算机。这款协议诞生于 1969 年,是早期网络通信的重要组成部分。
如今,更安全的 SSH(安全外壳协议)已逐渐取代 Telnet。SSH 同样是一种网络通信协议,但它为网络和系统管理员提供了更安全的远程计算机连接方式。
尽管如此,Telnet 在当今仍然有其应用价值,主要用于网络连接问题的排查和测试。掌握 Telnet 命令对于网络管理具有一定的帮助。
本文将深入探讨 Telnet 命令,包括其工作原理以及如何利用它解决连接问题,让我们开始吧!
什么是 Telnet?
Telnet,全称是 Telecommunication Network,是一种网络协议。它为用户提供一个命令行界面或解释器,以实现与远程服务器的通信。系统和网络管理员利用 Telnet 的终端到终端通信能力,来远程控制设备并执行各种操作,例如进行初始设备配置。
要使用 Telnet 协议,需要借助 Telnet 客户端。 客户端允许用户通过 TCP/IP 协议登录并使用远程系统上的应用程序。Telnet 客户端通过 Telnet 服务器应用程序来执行操作。此外,Telnet 客户端可以在各种现代操作系统上使用,包括 Windows、Linux 和 macOS。
请注意:除非另有说明,本文中提到的 “Telnet” 通常指的是 “Telnet 客户端”。
Telnet 安全吗?
在 1969 年 Telnet 诞生之初,安全性并非网络任务的首要考虑因素。因此,Telnet 并未使用任何加密措施。由于其不安全性,不建议通过 TCP/IP 网络连接到远程客户端。如果这样做,可能会使你的未加密数据暴露在黑客的攻击之下。SSH 是一个出色的替代协议,它提供了一种安全的远程服务器连接方式。
Telnet 的工作原理
从概念上讲,Telnet 协议的工作方式如下:
Telnet 是一种面向文本的通信方式,它建立了一个双向的(客户端-服务器)交互式通信系统。它采用 8 位字节的连接进行数据传输。 此外,您需要连接到终端的键盘和显示器才能使用 Telnet。
您在终端中输入命令以连接到远程计算机。连接成功后,Telnet 将允许您控制服务器,包括其文件和进程。
要连接到远程服务器,用户应在命令提示符中输入“Telnet”,其语法如下:
telnet 主机名 端口号
连接成功后,您可以使用 Telnet 提示符来输入更多 Telnet 命令。
Telnet 的常见用途包括:
- 检查开放端口
- 编辑文件,运行程序
- 配置交换机、路由器等网络设备
要结束会话,您需要在 Telnet 提示符中键入 “quit” 或 “close”。
如何在 Windows、Linux 和 macOS 中启用 Telnet 客户端
Telnet 客户端适用于所有主流平台和操作系统。但是,您需要先安装或启用它,才能使用它。
#1. Windows
如果您使用的是 Windows 7 或更高版本 (包括 8、10、11) 或 Windows Vista,可以按照以下步骤启用 Telnet 客户端:
- 转到 “开始” 菜单,搜索 “控制面板”。 您也可以通过按下 Win + R 键,然后键入 “control” 打开控制面板。
- 选择 “程序” > “程序和功能”。
- 选择左侧窗格中的 “启用或关闭 Windows 功能”。
- 选中 “Telnet 客户端” 旁边的复选框,然后点击 “确定”。
- 一旦 Windows 启用此功能并显示 “Windows 已完成请求的更改” 消息后,请点击 “关闭”。
注意:无需重启电脑即可开始使用 Telnet 客户端。
#2. Linux
与 Windows 一样,Linux 系统也默认没有预装 Telnet。
要在 Ubuntu 中安装 Telnet,您需要使用以下命令:
sudo apt-get install telnet
注意:此命令可能因您的 Linux 发行版而有所不同。
#3. macOS
macOS 也支持 Telnet。 要安装它,您需要使用 Homebrew。 如果您的系统中没有预装 Homebrew,可以通过运行以下命令安装它:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
系统会要求您输入管理员密码以授权安装。
安装 Homebrew 后,键入以下命令以在 macOS 上安装 Telnet。
brew install telnet
使用 Telnet 测试网络连接并排除故障
尽管 Telnet 并非远程连接的最佳选择,但它在测试和排除网络连接故障时仍然非常有用。
在继续之前,让我们快速回顾一下 Telnet 的基本语法。
telnet <服务器/主机 IP 地址> <端口号>
这里,服务器/主机 IP 地址是您想要连接的服务器地址。 端口是 TCP 端口号。
例如,如果要连接到端口号为 80 的服务器 example.com,则需要键入以下命令。
telnet example.com 80
这意味着您必须事先了解远程服务器的 IP 地址/名称和端口号,才能进行故障排除。
让我们开始吧!
网站服务器故障排除
Telnet 提供了一种便捷的服务器连通性测试方法。 您只需连接到服务器/主机 IP 地址以及接受连接的端口即可。
例如,如果您想连接到 23.45.75.22 的 532 端口,则需要运行以下命令:
telnet 23.45.75.22 532
此时,可能会发生以下三种情况:
- 成功连接到服务器。系统会显示 “已连接到服务器” 或任何其他确认消息,或等待进一步的输入。
- 连接服务器失败。您会收到诸如 “连接失败” 或 “连接被拒绝” 之类的错误消息。
- Telnet 没有返回任何消息。
Telnet 尝试连接远程服务器失败的原因有多种。此外,如果 Telnet 没有返回任何错误消息,则可能是防火墙或防病毒软件阻止了您或服务器端的连接。
如果我们连接到 geefklare.com 的 80 端口,您将看到一个即时连接,因为它正在等待进一步的命令。
telnet geefklare.com 80 Connected to techblik.com.com. Escape character is '^]'.
现在,输入以下命令。
GET / HTTP/1.1 Host: techblik.com.com
它将返回以下内容:
HTTP/1.1 200 OK Date: Fri, 18 Nov 2022 04:40:33 GMT Content-Type: text/plain; charset=UTF-8 Content-Length: 16 X-Frame-Options: SAMEORIGIN Referrer-Policy: same-origin Cache-Control: private, max-age=0, no-store, no-cache, must-revalidate, post-check=0, pre-check=0 [Additional server output follows]
接下来,让我们看看连接服务器失败的示例:
telnet 23.45.75.222 532 Connecting To 23.45.75.222...Could not open a connection to the host on port 532: Connect failed
检查端口是否开放
如果可以使用 Telnet 远程访问服务器,您也可以使用它来检查端口是否开放。
要检查服务器上的某个端口是否开放,需要使用以下命令:
telnet <服务器 IP 地址> <端口号>
例如,如果你的服务器 IP 地址是 23.45.47.53,你要检查的端口是 532。
telnet 23.45.47.53 532
如果命令执行成功,您会看到一个空白屏幕,这意味着该端口已打开。如果显示为“正在连接…”,然后显示错误消息,则表明该端口未开放。
Connection to 23.45.47.53:532 - fail Error #110 (Connection timed out)
SMTP 邮件服务器故障排除
简单邮件传输协议(SMTP)负责管理邮件服务器之间的通信。
您可以使用 Telnet 来排除 SMTP 服务器的故障,从而检查它们是否正在接收和发送邮件。你可以向 SMTP 服务器发送手动消息请求。如果一切正常,您会收到回复。
Telnet 允许您通过两种方式测试 SMTP 连接:
- 测试从互联网到您的邮件服务器的邮件流。
- 测试从您的邮件服务器到另一台服务器的邮件流。
要运行示例交换,请在终端中键入以下命令。
telnet mail.techblik.com.com 25 Trying 192.168.0.68… Connected to mail.techblik.com.com Escape character is '^]'. 220-mail.techblik.com.com ESMTP Exim 4.7 220-We do not authorize the use of this system to 220 transport unsolicited and/or bulk e-mail.
EHLO mail.techblik.com.com 250-techblik.com.com Hello techblik.com.com [192.168.3.200] 250-AUTH PLAIN LOGIN QUIT
在这里,用户输入的另外两个命令是:
- EHLO mail.techblik.com.com
- QUIT
EHLO 命令用于在使用 MAIL FROM 命令之前识别域名。QUIT 命令用于退出 Telnet 会话。
如果您需要更多高级命令,请参阅这篇文章,了解如何使用 Telnet 测试 Exchange 服务器上的 SMTP 通信。
FTP 服务器故障排除
与 SMTP 和 Web 服务器类似,您也可以对 FTP 服务器进行故障排除。您只需要输入 FTP 服务器的 IP 地址并连接到端口 21 即可。
telnet ftp.techblik.com.com 21
如果尝试成功,表示您已成功连接到服务器。否则,您会看到一条错误消息。
Error #0 (php_network_getaddresses: getaddrinfo failed: No address associated with hostname)
SSH 故障排除
SSH 是安全连接的现代替代方案,它取代了 Telnet。 您可以使用 Telnet 来检查服务器是否正在运行 SSH。
为此,请使用 Telnet 命令,并指定服务器的 IP 地址和端口 22。
telnet techblik.com.com 22 Trying 192.168.0.62… Connected to techblik.com.com. Escape character is '^]'. SSH-2.0-OpenSSH_5.3
总结
Telnet 在当今仍然是一个有用的工具。它允许您成功排除网络连接故障,而无需过分依赖复杂的工具或命令行。通过 Telnet,您可以检查 Web 服务器的可访问性,查看端口是否开放,并排除 SSH 和 FTP 的故障。
您可以参考这篇文章,了解如何解决 “找不到 telnet 命令” 错误。