Telnet 是一种用于 TCP/IP 网络的终端仿真程序,通过登录远程系统,可以访问互联网或本地网络上的另一台计算机。Telnet 是一种客户端-服务器端协议,连接到传输控制协议的 23 端口。您还可以使用 Telnet 检查远程系统上的开放端口。
在本教程中,你将学习如何在 Ubuntu 24.04 LTS 服务器上安装和使用 Telnet 服务器和客户端。同样的步骤也适用于旧版本的 Ubuntu,如 Ubuntu 22.04 和 Ubuntu 20.04。
警告:Telnet 是一种未加密的协议,因此并不安全。本指南仅供教学使用,不建议在系统中使用 Telnet 服务器。本指南将向您介绍如何安装和使用 Telnet 客户端和服务器,以便您进一步了解这一古老的服务器管理协议,或使用 Telnet 客户端测试您的邮件服务器。我们不建议在当今的服务器上使用 Telnet(服务器),主要是在互联网上使用时。要通过网络管理服务器,请使用 SSH 而不是 Telnet。使用 Telnet 客户端则不同。例如,Telnet 客户端是测试邮件或网络服务器的重要工具,如下图所示。
Ubuntu 24.04 软件仓库中提供了 Telnet 服务器软件包。只需运行以下命令即可安装:
sudo apt install telnet -y
只有当你想提供 Telnet 登录时,才需要 Telnet 服务器;如果你想使用 Telnet 命令测试其他服务,请跳过这一步。Ubuntu 24.04 软件仓库中提供了 Telnet 服务器软件包。只需运行以下命令即可安装:
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 服务器现已安装,并监听端口 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: febhost.com 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 测试远程系统上的开放端口。
例如,要测试远程系统(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 被阻止或 Telnet 服务未运行。您将看到以下输出:
Trying 192.168.0.100... telnet: Unable to connect to remote host: Connection refused
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)是否被互联网服务提供商或数据中心屏蔽,此测试程序将非常有用。