本页内容

  • 常见问题解答:什么是 Telnet?传输敏感数据时 Telnet 是否安全?如何在 Ubuntu 上使用 Telnet?能否在所有 Ubuntu 版本上安装 Telnet?安装 Telnet 时为何报错?如何从 Ubuntu 卸载 Telnet?Ubuntu 上是否有 Telnet 的替代方案?能否从 Ubuntu 通过 Telnet 连接 Windows 服务器?能否在 Ubuntu 中使用 Telnet 自动化任务?使用 Telnet 测试邮件服务器的目的是什么?Telnet 连接邮件服务器失败时该怎么办?如何使用 Telnet 发送邮件?测试邮件服务器时常见的错误有哪些?能否使用 Telnet 测试安全的 SMTP 端口?能否使用 Telnet 测试 IMAP 或 POP3 邮件服务器端口?在 Ubuntu 上使用 Telnet 测试邮件服务器是否需要特殊权限?如何解读 Telnet 会话中邮件服务器的响应?使用 Telnet 测试邮件服务器是否安全?
  • 什么是 Telnet?
  • 传输敏感数据时 Telnet 是否安全?
  • 如何在 Ubuntu 上使用 Telnet?
  • 能否在所有 Ubuntu 版本上安装 Telnet?
  • 安装 Telnet 时为何会收到错误信息?
  • 如何从 Ubuntu 卸载 Telnet?
  • Ubuntu 上是否有 Telnet 的替代方案?
  • 能否从 Ubuntu 通过 Telnet 连接 Windows 服务器?
  • 能否在 Ubuntu 中使用 Telnet 自动化任务?
  • 使用 Telnet 测试邮件服务器的目的是什么?
  • Telnet 连接邮件服务器失败时该怎么办?
  • 如何使用 Telnet 发送邮件?
  • 使用 Telnet 测试邮件服务器时需要注意哪些常见错误?
  • 能否使用 Telnet 测试安全的 SMTP 端口?
  • 能否使用 Telnet 测试 IMAP 或 POP3 邮件服务器端口?
  • 在 Ubuntu 上使用 Telnet 测试邮件服务器是否需要特殊权限?
  • 如何解读 Telnet 会话中邮件服务器的响应?
  • 使用 Telnet 测试邮件服务器是否安全?

Telnet 是一种用于 TCP/IP 网络的终端仿真程序,通过登录远程系统,使你能够访问互联网或局域网中的另一台计算机。Telnet 是一种客户端-服务器协议,连接到传输控制协议(TCP)的 23 端口。你也可以利用 Telnet 检查远程系统上的开放端口。

在本教程中,你将学习如何在 Ubuntu 24.04 LTS 服务器上安装并使用 Telnet 服务端和客户端。相同的步骤也适用于较早的 Ubuntu 版本,例如 Ubuntu 22.04 和 Ubuntu 20.04。

警告:Telnet 是一种未加密的、因此不安全的协议。本指南仅用于教学目的,并非建议在你的系统上使用 Telnet 服务端。如果你希望深入了解这一古老的服务器管理协议,或希望使用 Telnet 客户端来测试你的邮件服务器,本指南将向你展示如何安装和使用 Telnet 客户端及服务端。我们不建议在当今的服务器上使用 Telnet(服务端),尤其是通过 Internet 使用时。如需通过网络管理服务器,请使用 SSH 而非 Telnet。使用 Telnet 客户端则另当别论。例如,如下文所示,Telnet 客户端是测试邮件或 Web 服务器的有力工具。

系统要求

  • 已安装 Ubuntu 24.04 的服务器。
  • 具有 sudo 权限的非 root 用户。
  • 服务器上已配置静态 IP 地址,例如 192.168.0.100。

安装 Telnet 客户端

Telnet 客户端软件包在 Ubuntu 24.04 软件源中可用。你只需运行以下命令即可安装:

sudo apt install telnet -y

安装 Telnet 服务端

仅当你需要对外提供 Telnet 登录时才需要安装 Telnet 服务端;如果你只是想使用 Telnet 命令测试其他服务,可以跳过此步骤。Telnet 服务端软件包在 Ubuntu 24.04 软件源中可用。你只需运行以下命令即可安装:

sudo apt install telnetd -y

接下来,使用编辑器打开 /etc/inetd.conf 文件:

sudo nano /etc/inetd.conf

在文件末尾添加以下一行:

telnet  stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/telnetd

保存 inetd.conf 配置文件并重启 inetd 服务:

sudo systemctl restart inetd

安装完成后,你可以使用以下命令查看 Telnet 服务的状态:

sudo systemctl status inetd

输出:

root@server1:~# sudo systemctl status inetd
? inetd.service - Internet superserver
     Loaded: loaded (/usr/lib/systemd/system/inetd.service; enabled; preset: enabled)
     Active: active (running) since Wed 2024-05-29 11:53:38 UTC; 16min ago
       Docs: man:inetd(8)
   Main PID: 132955 (inetd)
      Tasks: 1 (limit: 4557)
     Memory: 552.0K (peak: 808.0K)
        CPU: 84ms
     CGroup: /system.slice/inetd.service
             ??132955 /usr/sbin/inetd

May 29 11:53:38 server1 systemd[1]: inetd.service: Scheduled restart job, restart counter is at 1.
May 29 11:53:38 server1 systemd[1]: Starting inetd.service - Internet superserver...
May 29 11:53:38 server1 systemd[1]: Started inetd.service - Internet superserver.

从远程系统测试 Telnet 连接

Telnet 服务端现已安装并监听 23 端口。现在可以从远程系统连接 Telnet 服务端了。

现在,登录到另一台 Ubuntu 系统并运行以下命令:

telnet 192.168.0.100

系统会提示你输入用户名和密码。身份验证成功后,你将看到如下输出:

Trying 192.168.0.100...
Connected to 192.168.0.100.
Escape character is '^]'.

Linux 6.8.0-31-generic (server1.example.com) (pts/1)

server1 login: howtoforge
Password:
Welcome to Ubuntu 24.04 LTS (GNU/Linux 6.8.0-31-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

This system has been minimized by removing packages and content that are
not required on a system that users do not log into.

To restore this content, you can run the 'unminimize' command.
You have new mail.

现在你可以通过 Telnet 在 Telnet 服务端上运行任意命令了。

使用 telnet 测试开放端口

你也可以利用 Telnet 测试远程系统上的开放端口。

例如,要测试远程系统(IP 192.168.0.100)上的 80 端口,运行以下命令:

telnet 192.168.0.100 80

如果 80 端口处于开放状态,你将看到如下输出:

Trying 192.168.0.100...
Connected to 192.168.0.100.
Escape character is '^]'.

如果 80 端口被阻止或服务未运行,你将看到如下输出:

Trying 192.168.0.100...
telnet: Unable to connect to remote host: Connection refused

使用 Telnet 命令测试邮件服务器

Telnet 命令在测试邮件服务器时也非常实用。使用 Telnet 连接邮件服务器:

telnet 192.168.0.100 25

如果连接成功,你将看到对方服务器的类似如下响应:

Trying 192.168.0.100...
Connected to 192.168.0.100.
Escape character is '^]'.
220 server1.example.com ESMTP Postfix (Debian/GNU)

现在你可以使用 ehlo 命令并附上你的发件人域名来响应服务器。例如:

ehlo mydomain.tld

随后邮件服务器会显示它所支持的方法。

250-server1.example.com
250-PIPELINING
250-SIZE
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250-SMTPUTF8
250 CHUNKING

要退出连接,请输入 quit 命令。

quit

结果如下:

221 2.0.0 Bye
Connection closed by foreign host.

完整的命令序列如下:

user@server1:~# 
telnet 192.168.0.100 25
Trying 192.168.0.100...
Connected to 192.168.0.100.
Escape character is '^]'.
220 server1.example.com ESMTP Postfix (Debian/GNU)
ehlo mydomain.tld
250-server1.example.com
250-PIPELINING
250-SIZE
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250-SMTPUTF8
250 CHUNKING
quit
221 2.0.0 Bye
Connection closed by foreign host.
user@server1:~#

如果你想确认邮件服务(25 端口)是否被你的互联网服务提供商或数据中心屏蔽,此测试过程非常有用。

常见问题解答

什么是 Telnet?

Telnet 是一种网络协议,通过虚拟终端连接提供双向的交互式、面向文本的通信功能。它通常用于访问远程服务器。

传输敏感数据时 Telnet 是否安全?

不安全,Telnet 不适合传输敏感数据,因为它以明文方式传输数据。对于安全通信,建议使用 SSH(Secure Shell)。

如何在 Ubuntu 上使用 Telnet?

要使用 Telnet,请打开终端并输入:

telnet [hostname] [port]

将 [hostname] 替换为你想要连接的服务器 IP 地址或域名,将 [port] 替换为端口号。

能否在所有 Ubuntu 版本上安装 Telnet?

你可以在所有当前受支持的 Ubuntu 版本上安装 Telnet。不过,在安装新软件之前,请确保你的系统已更新到最新状态。

安装 Telnet 时为何会收到错误信息?

如果收到错误信息,可能是由于多种原因造成的,例如系统未更新,或软件源中未提供 Telnet 软件包。请确保系统已更新,并且拥有可用的互联网连接。

如何从 Ubuntu 卸载 Telnet?

要卸载 Telnet,请打开终端并输入:

sudo apt-get remove telnet

Ubuntu 上是否有 Telnet 的替代方案?

SSH 是 Telnet 的常用替代方案。它提供加密连接,更加安全。在终端中输入 `sudo apt-get install openssh-client` 即可安装 SSH。

能否从 Ubuntu 通过 Telnet 连接 Windows 服务器?

可以,只要 Windows 服务器上启用了 Telnet 服务,你就可以从 Ubuntu 通过 Telnet 连接该服务器。

能否在 Ubuntu 中使用 Telnet 自动化任务?

从技术上讲,使用 Telnet 脚本可以实现任务自动化,但由于存在安全风险,并不推荐这样做。建议考虑使用 SSH 等更安全的方式来实现自动化。

使用 Telnet 测试邮件服务器的目的是什么?

使用 Telnet 测试邮件服务器,可以让你手动发送电子邮件、检查 SMTP 端口是否开放,并诊断邮件服务器运行中的问题。这对于排查邮件投递故障非常有帮助。

Telnet 连接邮件服务器失败时该怎么办?

如果连接失败,请检查邮件服务器地址和端口号是否正确。同时,请确保你的网络允许 25 端口的出站连接。出于安全原因,部分互联网服务提供商会屏蔽该端口。

如何使用 Telnet 发送邮件?

通过 Telnet 连接到 SMTP 服务器后,依次使用以下命令:

HELO [your_domain.com]
MAIL FROM:<
[email protected]
>
RCPT TO:<
[email protected]
>
DATA

然后输入你的邮件内容。输入完毕后,在新的一行输入一个句点(.)并按回车键结束邮件。最后使用 QUIT 命令结束会话。

使用 Telnet 测试邮件服务器时需要注意哪些常见错误?

常见错误包括连接超时、连接被拒绝,或来自 SMTP 服务器的错误代码,例如 550(找不到用户)或 451(临时本地问题)。这些代码通常表示服务器可访问性或邮件投递方面存在问题。

能否使用 Telnet 测试安全的 SMTP 端口?

Telnet 本身不支持加密连接(例如安全 SMTP 所使用的 465 或 587 端口)。要测试这些端口,使用 OpenSSL 等工具更为合适。

能否使用 Telnet 测试 IMAP 或 POP3 邮件服务器端口?

可以,你可以使用 Telnet 连接 IMAP(端口 143 或 993)或 POP3(端口 110 或 995)服务器。但需要注意,其命令与交互方式和 SMTP 有所不同。

在 Ubuntu 上使用 Telnet 测试邮件服务器是否需要特殊权限?

使用 Telnet 不需要特殊权限;不过,你需要网络访问权限,以及当系统中尚未安装 Telnet 时拥有安装它的权限。

如何解读 Telnet 会话中邮件服务器的响应?

SMTP 响应通常由数字代码加上文本消息组成。以 2 开头的代码表示成功,以 4 开头表示临时性失败,以 5 开头表示永久性失败。文本消息则提供了关于该响应的更多细节。

使用 Telnet 测试邮件服务器是否安全?

使用 Telnet 进行测试是不加密的,因此传输敏感信息时不安全。它通常用于受控环境下的故障排查。如需安全通信,请使用 SSH 等协议。