telnet 是一个历史悠久的网络协议和程序,用于远程登录或测试网络连接,它工作在 OSI 模型的第7层(应用层),并且是明文传输的,这意味着所有数据(包括用户名和密码)都以未加密的形式在网络中传输,因此极不安全,在现代生产环境中应被禁用。

尽管不安全,telnet 仍然是一个非常有用的网络诊断工具,尤其是在排查服务端口是否可达、服务是否正常响应等问题时。
安装 Telnet
在大多数现代的 Ubuntu 发行版(如 Ubuntu 18.04, 20.04, 22.04)中,出于安全考虑,telnet 客户端通常默认没有安装,你需要手动安装它。
安装 Telnet 客户端
这是最常用的安装方式,它允许你使用 telnet 命令去连接其他主机。
打开终端,运行以下命令:

sudo apt update sudo apt install telnetd
注意:telnetd 是 telnet 的守护进程(服务器端)包,安装它通常也会自动安装客户端程序,如果你只想安装客户端,可以尝试 telnet 或 telnet-client,但在 Ubuntu 的软件源中,telnetd 是最标准的选择。
安装 Telnet 服务器(可选)
如果你想让自己的 Ubuntu 机器成为一个 telnet 服务器,允许其他用户通过 telnet 登录,那么你需要安装并配置 telnetd。再次强调,这非常不安全,仅建议在受信任的内网环境中使用。
- 安装:
sudo apt install telnetd
- 配置:
- 主配置文件是
/etc/inetd.conf或/etc/xinetd.d/telnet,现在更常用xinetd或systemd来管理。 - 默认情况下,
telnet服务器可能不会自动启动,你需要启用它。 - 强烈建议禁用
telnet,改用 SSH,SSH (ssh命令) 是安全、加密的远程登录协议。
- 主配置文件是
使用 Telnet 命令(客户端)
telnet 的主要用途是测试网络连接和检查服务。
基本语法
telnet [主机名或IP地址] [端口号]
- 主机名或IP地址:你想要连接的目标计算机。
- 端口号:目标计算机上监听服务的端口号。这是
telnet最强大的用法之一。
常见用法示例
示例 1:测试远程主机的某个端口是否开放
这是 telnet 最经典的用法,你想测试 google.com 的 HTTP 服务(默认端口 80)是否可达。
telnet google.com 80
-
如果端口开放,你会看到类似下面的输出,并进入一个交互式会话:
Trying 142.250.196.142... Connected to google.com. Escape character is '^]'.你可以按照 HTTP 协议手动发送请求,
GET / HTTP/1.1 Host: google.com发送后,服务器会返回 HTTP 响应头和内容,输入
Ctrl+]然后回车,再输入quit即可退出。 -
如果端口被防火墙阻挡或服务未运行,你会看到:
Trying 142.250.196.142... telnet: Unable to connect to remote host: Connection timed out或者
Trying 142.250.196.142... telnet: connect to address 142.250.196.142: Connection refusedConnection timed out:表示目标主机可达,但指定端口没有服务在监听,或者被中间的防火墙(如路由器、主机防火墙ufw)拦截了。Connection refused:表示目标主机可达,但明确拒绝了你的连接请求,通常是因为该端口上没有运行任何服务。
示例 2:远程登录(不推荐)
如果你想通过 telnet 登录到另一台支持 telnet 服务的服务器。
telnet 192.168.1.100
连接成功后,会提示你输入用户名和密码。再次警告,整个过程都是明文,非常危险!
安全的替代方案:nc (Netcat)
由于 telnet 的不安全性,许多系统管理员更倾向于使用功能更强大且同样简单的 netcat (简称 nc) 来进行网络诊断。
nc 通常默认安装在 Ubuntu 系统中。
使用 nc 测试端口
语法与 telnet 类似:
nc -zv [主机名或IP地址] [端口号]
-z:表示只扫描端口,不发送数据。-v:表示详细输出。
示例:
nc -zv google.com 80
输出结果:
Connection to google.com 80 port [tcp/http] succeeded!
如果失败,它会明确告诉你连接失败。nc 的输出信息通常比 telnet 更清晰。
安全的替代方案:nmap
如果你需要进行更全面、更专业的端口扫描,nmap (Network Mapper) 是最佳选择。
安装 nmap
sudo apt install nmap
使用 nmap 扫描端口
nmap [主机名或IP地址]
示例:
nmap google.com
这会扫描 google.com 上所有常见的 1000 个端口。
如果你想扫描特定端口:
nmap -p 80 google.com
| 工具 | 主要用途 | 优点 | 缺点 | 推荐度 |
|---|---|---|---|---|
telnet |
网络诊断(端口测试)、远程登录 | 简单、几乎所有系统都有 | 不安全(明文)、功能单一 | ⭐⭐ (仅用于诊断) |
nc (Netcat) |
网络诊断(端口测试)、数据传输 | 功能强大、轻量级、比 telnet 更灵活 |
相对 telnet 稍复杂一点 |
⭐⭐⭐⭐ (强烈推荐用于诊断) |
nmap |
专业端口扫描、主机发现、服务识别 | 功能极其强大、信息详细、扫描类型多 | 相对复杂、需要一定学习成本 | ⭐⭐⭐⭐⭐ (专业网络诊断首选) |
ssh |
安全的远程登录 | 加密传输、功能丰富(端口转发、文件传输等) | 比 telnet 复杂一点 |
⭐⭐⭐⭐⭐ (唯一推荐的远程登录方式) |
最终建议:
- 为了安全:永远不要使用
telnet进行远程登录,请使用ssh。 - 为了诊断:在日常工作中,使用
nc -zv来快速检查端口是否可达,比telnet更简洁、更专业,如果需要更详细的扫描信息,使用nmap。
