Telnet 是基于 TCP 协议的传统远程终端协议,默认端口 TCP 23 。核心特性:全程明文传输,无任何加密 。 当前生产环境严禁使用 Telnet 服务端做远程登录 ;仅保留 Telnet 客户端 用于快速测试 TCP 端口连通性,是运维、开发最常用简易网络诊断工具。 本文覆盖 Windows / Linux /macOS 全平台安装、语法示例、返回结果解读、常见报错、安全替代方案,配套多规格对比表格。
⚠️ 重要安全提醒:不要在公网环境部署 telnet-server;密码、指令全部明文,抓包即可窃取凭证。
一、基础概念区分(客户端 vs 服务端)
|---------------------|---------------------------------|-------------------|-----------------|
| 类别 | 作用 | 使用场景 | 是否推荐公网部署 |
| Telnet 客户端 | 主动发起连接,探测远端 TCP 端口、登录 telnet 设备 | 运维端口连通性测试、调试老旧交换机 | ✅ 可正常使用 |
| Telnet 服务端(telnetd) | 监听 23 端口,允许外部设备登录本机 | 老旧内网设备临时调试 | ❌ 公网禁止,内网仅限临时应急 |
二、全平台 Telnet 客户端安装指南
2.1 Windows(Win10 / Win11 / Windows Server)
Windows 默认未启用 Telnet 客户端,提供图形界面、命令行两种安装方式。 验证是否安装成功 :CMD/PowerShell 执行 telnet,提示 "不是内部命令" 代表未安装。
|------------------|-----------------------------------------------------------------------|-------------------------------------------------------------------|-------|
| 安装方式 | 操作步骤 | 执行命令 | 权限要求 |
| 图形界面(控制面板) | Win+R → control → 程序 → 程序和功能 → 启用或关闭 Windows 功能 → 勾选【Telnet 客户端】→确定 | 无 | 普通管理员 |
| DISM 命令(CMD 管理员) | 以管理员打开命令提示符 | dism /online /Enable-Feature /FeatureName:TelnetClient | 管理员 |
| PowerShell 命令 | 管理员 PowerShell | Enable-WindowsOptionalFeature -Online -FeatureName TelnetClient | 管理员 |
卸载客户端命令(管理员 PowerShell)
Disable-WindowsOptionalFeature -Online -FeatureName TelnetClient
2.2 Linux 各发行版安装命令
客户端:
telnet;服务端:telnetd(如无特殊需求,只装客户端)
|---------------------------|--------------------------------------------|------------------------------------------|------------------------------------------|
| 系统发行版 | 安装 Telnet 客户端 | 安装 Telnet 服务端 | |
| Ubuntu / Debian | sudo apt update sudo apt install -y telnet | sudo apt install -y inetutils-telnetd | |
| CentOS7 | RHEL7 | sudo yum install -y telnet | sudo yum install -y telnet-server xinetd |
| CentOS8+ / Rocky / Fedora | sudo dnf install -y telnet | sudo dnf install -y telnet-server xinetd | |
2.3 macOS 安装
macOS 原生移除 telnet,依赖 Homebrew 包管理器
# 安装
brew install telnet
# 验证
telnet -v
2.4 安装完成统一验证命令
打开终端执行任意一条,正常进入交互模式即为安装成功
telnet
telnet --help
三、Telnet 标准语法与常用参数
3.1 基础语法
telnet [可选参数] 主机地址 [端口号]
不填写端口:默认使用 23 端口(telnet 标准端口)
端口自定义:可测试任意 TCP 端口(80、22、3306、6379 等)
3.2 通用参数对照表
|----|---------------------|------------------------------------------------------------------------|
| 参数 | 说明 | 使用示例 |
| -4 | 强制使用 IPv4 连接 | telnet -4 192.168.1.1(192.168.1.1) 80 |
| -6 | 强制使用 IPv6 连接 | telnet -6 2400::xxxx 22 |
| -b | 指定本机出口 IP 发起连接 | telnet -b 10.0.0.5(10.0.0.5) 192.168.1.100(192.168.1.100) 3306 |
| -e | 自定义逃逸字符(默认 Ctrl+]) | telnet -e @ 192.168.1.1(192.168.1.1) |
3.3 会话内交互指令(连接成功后使用)
连接建立后,按下 Ctrl + ] 进入 telnet 命令模式
|------------|---------------------|
| 交互命令 | 功能 |
| quit | 关闭 telnet 会话,退出程序 |
| open ip 端口 | 在当前会话新建连接 |
| close | 关闭当前连接,保留 telnet 程序 |
| ? / help | 查看全部内置命令 |
四、高频实战示例(运维最常用)
示例 1:测试 TCP 端口连通(最主流用途)
# 测试目标80端口是否开放
telnet 192.168.1.100 80
# 测试公网域名端口
telnet baidu.com 443
# 测试MySQL 3306端口
telnet 127.0.0.1 3306
连上了会显示一个黑屏/光标闪烁(说明端口通了)

连不上会提示"连接失败"或直接报错

示例 2:登录开启 telnet 服务的网络设备(交换机 / 路由器,仅限内网)
telnet 192.168.1.1
示例 3:手动和 Web 服务交互
telnet baidu.com 80
# 连接成功后输入
GET / HTTP/1.1
Host: baidu.com
回车两次,即可获取网页原始响应
五、连接返回结果解读(故障判断核心)
|----------------------------------------------------------------------|-----------------|---------------------------------------------------|
| 终端输出现象 | 网络结论 | 排查方向 |
| Connected to shturl.cc/j4mSS(shturl.cc/j4mSS) 光标闪烁 / 返回服务 Banner | ✅ 端口开放,TCP 握手成功 | 防火墙放行、服务正常监听;空白界面属于正常现象 |
| Trying shturl.cc/j4mSS...(shturl.cc/j4mSS...) Connection refused | ❌ 端口关闭 目标主机可达 | 1. 服务未启动 2. 监听地址非 0.0.0.0(0.0.0.0) 3. 本地防火墙拦截 |
| Trying shturl.cc/j4mSS...(shturl.cc/j4mSS...) 长时间卡住,连接超时 | ❌ 报文被防火墙丢弃 | 安全组、ACL、路由策略拦截,数据包无法抵达目标主机 |
| Name or service not known | ❌ DNS 解析失败 | 检查域名拼写、DNS 服务器配置 |
六、常见报错与解决方案
|--------------------------|-----------------|------------------------------------|
| 报错信息 | 根因 | 解决办法 |
| 'telnet' 不是内部或外部命令 | 客户端未安装 | 参考第二章节安装 telnet 客户端 |
| Connection refused | 目标端口无程序监听 | 登录目标机器,检查服务启动状态、监听地址、本地防火墙 |
| 连接超时,无任何拒绝提示 | 防火墙静默丢弃数据包 | 核查云服务器安全组、iptables、硬件防火墙策略 |
| 能连上 telnet,但输入字符无响应 | 终端模式异常 | Ctrl+] 进入命令模式,输入 mode character |
| Linux 安装 telnet 后依然命令找不到 | 软件包未正确安装,环境变量异常 | 重新执行安装命令,或执行 which telnet 确认路径 |
七、Telnet 安全缺陷与现代替代方案
Telnet VS SSH 核心对比表
|---------|------------|---------------------|
| 对比项 | Telnet | SSH |
| 传输加密 | 无,明文传输 | 全程加密 (AES/ChaCha20) |
| 默认端口 | 23 | 22 |
| 凭证安全 | 账号密码抓包直接可见 | 无法直接窃取会话信息 |
| 中间人攻击风险 | 极高 | 有效防护 |
| 适用场景 | 仅内网临时端口探测 | 远程服务器登录首选 |
端口连通测试替代工具(推荐优先使用)
telnet 仅支持 TCP,且脚本兼容性差,以下工具更适合自动化运维:
1、Netcat(nc) 跨平台,支持 TCP/UDP 探测
nc -zv 192.168.1.100 80
2、Windows PowerShell 内置(无需额外安装)
Test-NetConnection 192.168.1.100 -Port 3306
3、curl 通用方案
curl -v telnet://192.168.1.100:80
八、运维最佳实践总结
1、只安装 Telnet 客户端,永远不要在公网服务器启用 telnet-server;
2、Telnet 仅用于端口连通性测试,绝不用于远程登录服务器;
3、服务器远程管理统一使用 SSH 协议;
4、生产环境防火墙全局屏蔽外网入方向 TCP 23 端口;
5、自动化脚本尽量使用 nc、Test-NetConnection 替代 telnet,兼容性更强。