虚拟机telnet连接失败的高频原因集中在网络不通、服务未启动、防火墙拦截、端口未监听这几类,按“能否ping通→端口是否监听→防火墙是否放行→客户端是否匹配”的顺序排查,大部分问题能在10分钟内定位。
先判断失败现象:连接超时和连接被拒绝不是一回事
排查之前,先看清楚telnet命令返回的报错,不同报错指向不同层面,方向错了会浪费大量时间。
- 连接超时(Connection timed out):多数情况下是网络不可达、路由不通、云安全组拦截或虚拟机网卡配置错误,数据包根本没到达目标端口。
- 连接被拒绝(Connection refused):说明网络能到达目标主机,但目标端口没有服务监听,或服务只监听在127.0.0.1上,又或者防火墙用REJECT方式直接拒绝。
- 无路由到主机(No route to host):常见于虚拟机网络模式错误或宿主机防火墙返回不可达。
业内专家指出,相当一部分telnet故障被误判为服务问题,实际是网络层不通,先确认现象,能少走弯路。
虚拟机telnet连接失败怎么排查:四步定位法
按顺序操作,每一步都有明确命令和判断标准,顺序不建议颠倒,因为上层检查依赖下层通路。
第一步:检查虚拟网络模式与宿主机互通
虚拟机网络模式选错,是最容易被忽略的坑,不同模式对telnet连接影响很大。
- NAT模式:虚拟机通过宿主机的NAT服务上网,宿主机能访问虚拟机,但外部设备通常不能直接访问,如果从宿主机telnet,问题不大;如果从局域网其他机器telnet,大概率不通。
- 桥接模式:虚拟机和宿主机在同一物理网络,等于一台独立主机,适合局域网内其他设备访问。
- 仅主机模式(Host-Only):只能和宿主机通信,无法连接外部网络。
先用ping测试宿主机到虚拟机的连通性:
ping 虚拟机IP
如果ping不通,检查虚拟网络编辑器中的子网设置、DHCP分配、网关是否正确,再看虚拟机内部IP是否和宿主机虚拟网卡同一网段,Windows宿主机可以在ipconfig中查看VMnet8(NAT)或VMnet1(Host-Only)的地址,确认虚拟机IP落在对应网段内。
对于VMware用户,还需要检查虚拟网络编辑器里NAT设置中的网关IP是否与虚拟机网关一致,网关写错会导致虚拟机只能访问本网段,无法被外部访问。
第二步:确认虚拟机内telnet服务端口监听状态
ping通只说明三层可达,不代表telnet服务正在监听,telnet默认使用TCP 23端口,服务没启动或改了端口,就会返回连接被拒绝。
Linux虚拟机执行:
netstat -tlnp | grep 23
或使用ss命令:
ss -tlnp | grep 23
如果没有输出,说明没有进程在监听23端口,常见原因有两个:telnet服务端未安装,或服务没有开机启动。
CentOS/RHEL 7及以上一般使用xinetd管理telnet:
yum install telnet-server xinetd -y
systemctl enable xinetd
systemctl start xinetd
安装后还需要检查配置文件/etc/xinetd.d/telnet,把disable = yes改为disable = no,否则服务仍然不会启动,改完重启xinetd:
systemctl restart xinetd
Ubuntu/Debian安装telnetd后,默认由systemd直接管理:
apt install telnetd -y
systemctl enable telnetd
systemctl start telnetd
Windows虚拟机:Windows默认不启用telnet服务器,在“服务”中找Telnet服务,将其启动类型改为手动或自动并启动,同时确认“远程桌面服务”不等于telnet服务,二者端口不同,远程桌面使用3389端口。
第三步:检查防火墙与安全组规则
这是企业内网和云服务器环境中telnet连接超时的头号原因,防火墙策略分为三层:虚拟机系统防火墙、宿主机防火墙、云平台安全组。
Linux系统防火墙
CentOS 7+常用firewalld:
firewall-cmd --add-port=23/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-ports
旧版或部分服务器用iptables:
iptables -I INPUT -p tcp --dport 23 -j ACCEPT
service iptables save
Ubuntu的ufw:
ufw allow 23/tcp
ufw reload
如果只是临时排查,可以先关闭防火墙测试:
systemctl stop firewalld
但生产环境不建议长期关闭,测试完要恢复策略,否则会引入更大风险。
Windows防火墙
在“高级安全Windows Defender防火墙”中,入站规则新建规则,选择端口,TCP 23,允许连接,也可以从命令行添加:
netsh advfirewall firewall add rule name="Telnet" dir=in action=allow protocol=TCP localport=23
添加后再次测试,如果通了说明问题就出在防火墙。
云平台安全组
云服务器除了系统防火墙,还有一层独立安全组,很多人只放行了22端口SSH,没放行23端口,导致云服务器telnet连接超时怎么解决都找不到原因,登录云控制台,在安全组入方向添加TCP 23端口,源地址按需设置,不要随意设为0.0.0.0/0,否则telnet明文传输容易成为暴力破解入口。
第四步:验证telnet客户端与协议版本
如果需要从本地连接虚拟机,本地机器也要有telnet客户端,Windows系统自带telnet客户端默认未开启,需要在“启用或关闭Windows功能”中勾选Telnet客户端,也可以直接用PowerShell测试端口,避免客户端问题干扰判断:
Test-NetConnection 虚拟机IP -Port 23
该命令显示TcpTestSucceeded是否为True,Linux客户端可以用nc命令做更灵活的测试:
nc -zv 虚拟机IP 23
如果有输出succeeded,说明连接成功,如果仍失败,再回头看服务监听和防火墙。
不同场景下telnet不通的原因和解决方法
本地虚拟机桥接模式无法telnet登录
桥接模式虚拟机无法被同一局域网其他机器telnet,通常是虚拟网卡绑定错误,检查虚拟机设置中“网络适配器”是否选中了正确的物理网卡,如果宿主机同时有有线网卡和无线网卡,桥接到错误的网卡会导致IP段不在同一网络。
部分公司交换机会做端口隔离或MAC地址绑定,虚拟机MAC地址变化后,交换机会丢弃流量,这时可以在虚拟机配置中固定MAC地址,或联系网络管理员放行。公司内网虚拟机telnet不通时,这步不能跳过。
云服务器telnet连接超时怎么解决
云服务器排查顺序略有不同,先看安全组,再看系统防火墙,最后看服务监听,云厂商默认安全组通常只开放常用端口如22、80、443,23端口基本不会默认放行,修改安全组后一般立即生效,但个别情况需要重启实例或等待策略下发。
如果安全组和防火墙都放行,还是超时,检查云服务器是否绑定弹性公网IP,以及网络类型是否支持公网入方向,部分轻量服务器默认不开通公网入方向除指定端口外,需要在控制台防火墙页面单独添加。
公司内网虚拟机telnet不通的排查思路
公司内网环境常有额外网络隔离,虚拟机如果连接在仅主机模式,只有宿主机能访问,其他办公电脑无法telnet,改成桥接模式后,还要确认办公网段和虚拟机IP是否在同一VLAN,跨VLAN访问需要网关放行路由和ACL策略。
排查时可以先用同一网段的电脑telnet测试,如果同网段通、跨网段不通,基本可以判定是路由或ACL问题,此时需要网络管理员介入,定位防火墙策略或交换机ACL。
telnet和ssh连接区别对故障定位的影响
很多人把telnet和ssh混为一谈,但两者的连接层和排查重点不同,telnet默认23端口,明文传输,不加密;ssh默认22端口,加密传输,现代Linux发行版普遍默认只安装ssh服务端,不安装telnet服务端。
所以如果ssh可以连接但telnet连接失败,基本可以排除网络层问题,重点查telnet服务是否安装和监听,反过来,如果两者都不通,先查网络和安全组,这个对比能快速缩小范围。
部分安全设备对23端口有默认拦截策略,因为telnet明文传输账户口令,风险较高,近年来越来越多企业直接禁用telnet,改用ssh,如果公司内网虚拟机telnet不通,还要确认是否有安全基线要求强制关闭23端口。
常用命令与操作路径汇总
下表按操作系统和排查目标整理,方便快速对照。
| 排查目标 | Linux命令 | Windows命令/路径 |
|---|---|---|
| 查看端口监听 | netstat -tlnp | grep 23 |
netstat -ano | findstr 23
|
| 测试端口连通 | nc -zv IP 23 |
Test-NetConnection IP -Port 23 |
| 放行防火墙 | firewall-cmd --add-port=23/tcp --permanent |
netsh advfirewall firewall add rule name="Telnet" dir=in action=allow protocol=TCP localport=23 |
| 启动telnet服务 | systemctl start xinetd |
services.msc中启动Telnet服务 |
| 查看网卡IP | ip addr |
ipconfig |
使用系统自带的免费telnet客户端或nc命令即可完成大部分测试,不需要额外购买付费网络调试工具,很多第三方工具本质上也是封装这些命令,免费方案足够满足日常排查。
排查中容易忽略的三个细节
- 服务监听地址:有些服务默认只监听127.0.0.1,需要改为0.0.0.0或虚拟机实际IP,可以在配置文件中检查监听地址,telnetd的常见配置文件为
/etc/xinetd.d/telnet。 - 宿主机安全软件:Windows宿主机上的第三方杀毒软件或防火墙可能拦截虚拟机网卡的入站流量,暂时退出安全软件测试,能排除这个变量。
- IPv6干扰:部分系统同时启用IPv6,telnet域名解析时优先走IPv6,但服务只监听IPv4,可以尝试用
-4参数强制IPv4连接,或直接使用IP地址测试。
虚拟机telnet连接失败没有万能命令,但排查顺序比盲目重启更重要,先看报错类型判断层级,再按网络、服务、防火墙、客户端四步走,基本能覆盖绝大多数场景,日常运维中,建议用ssh替代telnet,如果必须保留telnet,至少限制源地址并配合防火墙白名单。
Q&A:虚拟机telnet连接失败相关问题
虚拟机telnet连接失败怎么办?
先运行ping 虚拟机IP确认网络通,网络通再在虚拟机内执行netstat -tlnp | grep 23确认端口监听,监听正常则检查系统防火墙和云安全组是否放行TCP 23端口,最后用Test-NetConnection IP -Port 23从客户端验证,按这个顺序可以快速定位。
telnet不通的原因和解决方法有哪些?
常见原因包括:虚拟网络模式选择错误、telnet服务未安装或未启动、防火墙或安全组拦截、服务监听地址为127.0.0.1、客户端未安装telnet工具,解决方法分别为:切换到合适的网络模式、安装并启动telnet-server、放行23端口、修改监听地址为0.0.0.0、启用系统自带telnet客户端。
Linux虚拟机无法telnet登录怎么处理?
先确认是否安装telnet-server和xinetd,CentOS执行yum install telnet-server xinetd -y,然后启动xinetd并设置开机自启,再检查ss -tlnp | grep 23是否有监听,若没有,检查/etc/xinetd.d/telnet文件中disable是否为yes,改成no后重启xinetd,最后用firewalld放行23端口。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/652756.html





