学习 Telnet 命令以测试和解决连接问题

深入理解 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 命令” 错误。