首页/系统/Linux 运维命令速查/telnet 端口与协议手测
网络命令82 条

telnet 端口与协议手测

作为登录协议已淘汰(明文),但作为「手写协议调试器」仍好用:连端口、敲 HTTP/SMTP 命令看原始响应。

Linux 运维命令速查系统更新于 2026-10-13

telnet 还剩什么用

telnet 作为登录协议早已被淘汰:所有内容明文传输,包括口令。但它作为「手写协议调试器」依然好用:连上端口后可以直接敲明文协议命令,看到服务器返回的原始字节。判断端口通不通、服务是不是在监听、SMTP 问候语是否正常,用它几秒就能得到答案。

基本信息

适用平台Linux / macOS / Windows 均可,但多数系统默认不再预装
语法telnet 主机 端口
退出方式先按 Ctrl+] 进入命令模式,再输入 quit
替代工具nc、以及 shell 自带的 /dev/tcp 写法

典型使用场景

  • 确认某个端口是否开放、是否有服务在监听
  • 手工发一条 HTTP 请求,直接看响应头与状态码
  • 检查邮件服务的问候语是否正常返回
  • 验证缓存或消息类服务的明文命令交互
  • 在不方便安装工具的环境里做最基础的端口探测

常用示例

常用示例
telnet 10.0.0.5 80                  # 连上后手工输入请求
  GET /health HTTP/1.0
  Host: app.internal
                                      # 空行(再按一次回车)才发送
  telnet 10.0.0.5 25                # 看 SMTP 问候语
printf 'GET / HTTP/1.0\r\nHost: x\r\n\r\n' | timeout 5 telnet 10.0.0.5 80   # 非交互式测试
nc -vz 10.0.0.5 80                  # 只测端口连通,比 telnet 更省事
timeout 3 bash -c 'echo > /dev/tcp/10.0.0.5/80' && echo open   # 无额外工具时的替代写法

常见手测对象

服务常用端口可观察内容
HTTP 服务80响应状态行与响应头
HTTPS 服务443不能直接手测:需 TLS 能力,用专用客户端
邮件收信25服务问候语与支持的命令
缓存或键值服务6379连上后可直接发送简单命令看应答
任意端口自定义能连上说明监听与网络策略都通
不要把 telnet 用于日常登录或传输任何凭据:全程明文,网络路径上任何一跳都能看到内容。

使用要点

  • 连不上时先区分是拒绝连接还是超时,两者指向的故障不同
  • 明文协议手测时注意行尾必须符合协议要求,否则服务端一直等数据
  • 加密服务无法用 telnet 手测,改用支持 TLS 的客户端
  • 在受限环境里没有该工具时,用系统自带能力或其它客户端替代
  • 脚本化时给交互式客户端加超时,避免卡住整条流水线
退出交互式会话需要先进入命令模式再退出,直接关终端会残留一个半开的连接,长时间挂着会占用对端资源。

易错点

  • 明文协议请求必须用空行结尾,少一次回车服务端会一直等待,看起来像服务无响应
  • 不少系统默认没有预装该命令,脚本里依赖它会直接报命令不存在,需准备替代写法
  • 拿它测加密端口只会得到乱码或超时,容易误判成服务故障
  • 误把「能连上端口」当成「服务功能正常」:端口开放只说明监听存在

数据来源与参考

  • man 1 telnet(netkit-telnet 手册)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌