菜鸟科技网

Unix telnet命令如何使用?

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

Unix telnet命令如何使用?-图1
(图片来源网络,侵删)

尽管由于安全性问题(所有数据,包括密码,都以明文传输),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

连接成功后,会提示你输入用户名和密码,登录后,你就可以执行远程命令了。

Unix telnet命令如何使用?-图2
(图片来源网络,侵删)

退出远程登录:telnet 会话中,输入 exitlogout 命令,或者按下 Ctrl+] 组合键,然后输入 quit


测试网络连通性(最常用)

这是 telnet 在今天最常见的用法,它可以用来测试你的机器是否能到达某个 IP 地址的某个特定端口。

语法: telnet <主机> <端口>

示例 1:测试是否能访问百度网站的 80 端口(HTTP 服务)

Unix telnet命令如何使用?-图3
(图片来源网络,侵删)
telnet www.baidu.com 80

成功连接的输出示例:

Trying 182.61.200.7...
Connected to www.baidu.com.
Escape character is '^]'.
  • Trying...: 正在尝试解析域名并建立连接。
  • Connected to ...: 连接成功!这表明你的网络可以到达百度服务器的 80 端口。

连接失败的情况:

  1. 主机无法访问 (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

    可能原因:目标主机不在线、防火墙阻止了你的连接请求、或网络不通。

  2. 端口未开放 (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 进行远程操作,使用 pingnc (或 telnet) 进行网络诊断。

分享:
扫描分享到社交APP
上一篇
下一篇