telnet 是一个历史悠久的网络协议和程序,全称为 "Telecommunication Network",它的主要功能是远程登录到另一台主机,或者用于测试网络连接和调试网络服务。

尽管由于安全性问题(所有数据,包括密码,都以明文传输),telnet 已基本被更安全的 ssh (Secure Shell) 所取代,但它在网络故障排查中仍然是一个非常实用的工具。
基本语法
telnet [选项] [主机名或IP地址] [端口号]
- 选项: 一些可选的参数,如
-l指定登录用户名。 - 主机名或IP地址: 你想要连接的目标计算机。
- 端口号: 可选参数,如果不指定,
telnet默认连接到目标主机的 23号端口,这是 Telnet 服务的标准端口。
主要用途和用法
远程登录(已基本淘汰)
这是 telnet 最原始的用途,你可以像登录本地终端一样远程登录到另一台 Unix/Linux 服务器。
示例:
# 连接到 IP 地址为 192.168.1.100 的服务器,使用默认的 23 端口 telnet 192.168.1.100
连接成功后,会提示你输入用户名和密码,登录后,你就可以执行远程命令了。

退出远程登录:
在 telnet 会话中,输入 exit 或 logout 命令,或者按下 Ctrl+] 组合键,然后输入 quit。
测试网络连通性(最常用)
这是 telnet 在今天最常见的用法,它可以用来测试你的机器是否能到达某个 IP 地址的某个特定端口。
语法: telnet <主机> <端口>
示例 1:测试是否能访问百度网站的 80 端口(HTTP 服务)

telnet www.baidu.com 80
成功连接的输出示例:
Trying 182.61.200.7...
Connected to www.baidu.com.
Escape character is '^]'.
Trying...: 正在尝试解析域名并建立连接。Connected to ...: 连接成功!这表明你的网络可以到达百度服务器的 80 端口。
连接失败的情况:
-
主机无法访问 (Connection timed out)
telnet 192.168.1.50 22
输出:
Trying 192.168.1.50... telnet: connect to address 192.168.1.50: Connection timed out可能原因:目标主机不在线、防火墙阻止了你的连接请求、或网络不通。
-
端口未开放 (Connection refused)
telnet 192.168.1.100 12345
输出:
Trying 192.168.1.100... telnet: connect to address 192.168.1.100:12345: Connection refused可能原因:目标主机在线,但指定的
12345端口上没有服务在监听,或者防火墙规则明确拒绝了该端口的连接。
调试网络服务
你可以手动与任何运行在网络上的服务进行“对话”,以检查其是否正常响应,这对于开发人员或系统管理员非常有用。
示例:测试 SMTP 邮件服务
假设你要检查邮件服务器 mail.example.com 的 SMTP 服务(默认端口 25)是否正常工作。
telnet mail.example.com 25
连接成功后,你可以输入 SMTP 协议的命令来测试服务器响应。
Trying 192.0.2.1...
Connected to mail.example.com.
Escape character is '^]'.
220 mail.example.com ESMTP Postfix
220 是服务器返回的欢迎消息,表示服务正常。
然后你可以手动输入:
EHLO myclient.com
服务器会返回支持的扩展功能列表。
250-mail.example.com
-PIPELINING
-SIZE 10240000
-VRFY
-ETRN
-ENHANCEDSTATUSCODES
-8BITMIME
-DSN
-SMTPUTF8
250-CHUNKING
250 8BITMIME
最后输入 quit 退出。
其他常用调试端口:
- FTP (21):
telnet ftp.server.com 21 - SSH (22):
telnet ssh.server.com 22(可以用来快速检查SSH服务是否运行,但不用于登录) - HTTP (80):
telnet www.server.com 80 - HTTPS (443):
telnet secure.server.com 443
常用选项
-l <用户名>: 指定登录时使用的用户名,这通常只在连接 Telnet 服务器时有效,很多现代 Telnet 服务已禁用此功能。telnet -l myuser 192.168.1.100
-a: 尝试自动登录,通常与-l选项配合使用。-b <IP地址>: 使用本机的指定 IP 地址作为源地址进行连接。-e <字符>: 设置转义字符,默认是Ctrl+]。
安全性警告 ⚠️
非常重要: telnet 是一个不安全的协议,它在网络上传输的所有数据(包括你的用户名、密码和所有输入的命令)都是明文的,这意味着任何在网络上进行“中间人攻击”的人都能够轻易地窃取你的信息。
请务必:
- 不要在生产环境中使用
telnet进行远程管理。 请使用更安全的替代品,如ssh。 - 仅在内部网络或用于网络诊断等非敏感操作时使用
telnet。
telnet vs. netcat (nc)
在网络调试领域,netcat (或 nc) 被誉为“网络工具中的瑞士军刀”,功能比 telnet 更强大。
telnet: 主要用于交互式连接,功能相对单一。netcat: 可以做telnet能做的所有事,并且更多,它可以作为客户端连接,也可以作为服务器监听端口;可以传输文件;可以扫描端口等。
用 netcat 实现与 telnet 相同的功能:
# 测试连接到百度80端口 nc -zv www.baidu.com 80 # 输出 # Connection to www.baidu.com 80 port [tcp/http] succeeded!
-z 表示扫描模式,只连接不发送数据;-v 表示详细输出。
| 特性 | 描述 |
|---|---|
| 主要用途 | 远程登录(已淘汰)、测试网络连通性、调试网络服务。 |
| 默认端口 | 23 |
| 优点 | 几乎所有 Unix/Linux 系统都预装,语法简单,非常适合快速检查端口是否可达。 |
| 致命缺点 | 不安全,所有数据明文传输。 |
| 安全替代品 | SSH (Secure Shell),用于安全的远程登录和管理。 |
| 功能更强的替代品 | Netcat (nc),更灵活、更强大的网络调试工具。 |
在日常工作中,请优先使用 ssh 进行远程操作,使用 ping 和 nc (或 telnet) 进行网络诊断。
