端口23无法访问,根本原因在于现代操作系统默认不再启用Telnet服务,同时防火墙和安全组默认拦截该端口。 排查需按“服务端服务是否启动 → 防火墙规则是否放行 → 云平台安全组是否授权 → 客户端Telnet功能是否安装”的顺序逐层推进。
telnet 23端口连接失败,先分清是哪一段不通
很多朋友在排查时容易陷入误区,一上来就怀疑虚拟机配置有问题。telnet 23端口连接失败往往不是单一原因造成的,建议先做一个简单的自测:在虚拟机本机上执行 telnet 127.0.0.1 23,如果本机回显“connection refused”,说明Telnet服务根本没起来;如果卡住不动,说明服务已启动但被防火墙拦截,本机通而外部不通,那问题就出在网络安全组或路由层面。
常见症状与对应方向
- 连接被拒绝(Connection refused):服务未运行或监听地址不是0.0.0.0
- 连接超时(Connection timed out):防火墙丢弃包或安全组未放行,也可能是运营商封禁了23端口
- 提示命令不存在:客户端未安装Telnet组件
为什么现代系统默认封禁23端口
端口23是Telnet协议的默认端口,Telnet诞生于1969年,那个年代没有网络安全的概念。Telnet全程明文传输,包括用户名和密码,抓包工具可以轻易还原所有输入内容,据业内专家指出,随着加密协议普及,Telnet已属于高危遗留协议。
行业共识认为,生产环境中应优先使用SSH(端口22)或配置了TLS的加密远程管理方案,Windows和主流Linux发行版在装机时默认不安装Telnet服务端,且Windows防火墙内置了针对23端口的阻止规则,这不是配置错误,而是安全基线的一部分。
如何启用虚拟机Telnet服务端
既然系统默认不装,那就需要手动把服务装回来并配置成自启动,这一步不在控制面板里点几下鼠标就能完成,需要用到命令行或包管理器。
Windows Server虚拟机启用Telnet服务
登录虚拟机后打开PowerShell(管理员模式),执行以下命令安装Telnet服务端:
Install-WindowsFeature -Name Telnet-Server Set-Service -Name Telnet -StartupType Automatic Start-Service -Name Telnet
命令执行完毕后,在“服务”管理器中确认Telnet状态为“正在运行”,如果安装失败,请检查虚拟机镜像是Server Core还是Desktop Experience版本,前者需要额外添加功能源。
Linux虚拟机启用Telnet服务
以CentOS/RHEL系列为例,先安装软件包再启动服务:
yum install -y telnet-server telnet xinetd systemctl enable telnet.socket systemctl start telnet.socket
需要注意,不同发行版的服务管理方式差异较大,Ubuntu/Debian系统则使用:
apt-get install -y openbsd-inetd telnetd systemctl restart inetd
服务启动后,用 netstat -tlnp | grep :23 验证监听状态,只有看到 0.0.0:23 或 ::23 才说明服务端已就绪。
windows telnet 23 端口开启方法中的防火墙配置
服务端就绪后,防火墙是第二道拦路虎,Windows系统自带防火墙默认对入站的23端口设为“阻止”,需要手动添加规则,这一步在windows telnet 23 端口开启方法中是最容易踩坑的环节。
Windows防火墙入站规则配置
操作路径:打开“控制面板” → “Windows Defender防火墙” → “高级设置” → 左侧选择“入站规则” → 右侧“新建规则”。
规则类型选择“端口”,协议选“TCP”,端口填“23”,操作选“允许连接”,配置文件三个都要勾选,规则名称随意填写,建议命名为“Telnet-23”。
快速命令行方式(管理员PowerShell执行):
New-NetFirewallRule -DisplayName "Allow Telnet 23" -Direction Inbound -Protocol TCP -LocalPort 23 -Action Allow
Linux防火墙放行23端口
如果是firewalld(CentOS 7+默认):
firewall-cmd --permanent --add-port=23/tcp firewall-cmd --reload
如果是iptables(旧版系统):
iptables -A INPUT -p tcp --dport 23 -j ACCEPT service iptables save
判断系统用的是哪种防火墙管理工具,执行 systemctl status firewalld 查看运行状态即可。
云服务器安全组的坑位排查
虚拟机的防火墙放行了,端口还是不通,问题大概率出在云平台的安全组上。安全组是云服务器外部的第一道访问控制层,优先级高于虚拟机内部防火墙,这里必须逐项检查。
安全组从属的层级结构为:云服务器 → 安全组 → 入方向规则,控制台路径一般是“云服务器控制台 → 选中实例 → 安全组配置”,查看入方向规则列表,确认是否有 TCP:23 的记录。
如果没有,点击“添加规则”并填写:
- 协议端口:TCP:23
- 授权对象:默认0.0.0.0/0(实际使用中建议限定固定IP,如
0.113.5/32) - 描述:Telnet远程管理
不同云厂商控制台界面不同,但配置逻辑一样。酷番云 23端口配置安全组的具体路径是:轻量应用服务器控制台 → 防火墙 → 添加规则,或云服务器CVM控制台 → 安全组 → 添加入站规则,简米云则在ECS实例详情页的“安全组”页签中操作,华为云的位置在“弹性云服务器 → 安全组”下方,判断自己平台的操作路径,最快方式是看实例详情页有没有“安全组”或“防火墙”字样,点击后直接添加规则即可。
linux 23端口端口不通怎么排查
如果防火墙和安全组都放行了,依然linux 23端口端口不通怎么排查?这时要观察Linux系统自身的网络栈和进程状态。
检查服务是否真的在监听
netstat -tlnp 输出中没有23端口,说明服务进程没起来或启动后崩溃,查看日志定位原因:
tail -f /var/log/messages
SELinux上下文冲突、端口被其他进程占用(如旧的xinetd配置残留)、依赖库缺失都是常见原因。
排除云端路由和公网入方向限制
部分云厂商的默认安全组规则会拒绝0.0.0/0对23端口的全部入站流量,甚至在VPC网络ACL层做了二次限制,检查VPC子网关联的网络ACL出入站规则,确认没有更上层的拦截。
测通后记住协议的本质
23端口通了,Telnet会话也建立成功了,此时要注意:这是明文连接,所有键盘输入都会暴露在网络上
,只在绝对可信的内网环境(如虚拟网络内部通信)临时使用,不建议跨越公网直接使用。
配置完成后如何验证
验证端口放行效果,建议使用以下命令测试:
telnet 192.168.1.100 23
回显 Connected to 192.168.1.100 说明通了,输入用户名密码即可登录,如果回显 Escape character is '^]',说明已进入Telnet命令行,输入 quit 返回。
测试时注意区分客户端和服务端区别
客户端测试机需要安装Telnet客户端功能(Windows“启用或关闭Windows功能”中勾选“Telnet客户端”),否则会报“不是内部或外部命令”,在Windows 10/11上,管理员PowerShell执行:
dism /online /enable-feature /featurename:TelnetClient /all
服务端和客户端两份配置缺一不可,别在服务端装了服务但客户端没装命令,那肯定连不上。
常见问题解答
Q:配置完安全组和防火墙后,23端口还是连不上,从哪里继续排查?
A:先在虚拟机本机执行 telnet 127.0.0.1 23 验证服务端是否正常,再在另一台同内网机器尝试连接,外网连接不上时检查云平台安全组是否生效,修改安全组规则后一般需要几秒同步时间,个别平台需要重启实例才生效。
Q:云服务器安全组已经放行TCP 23端口,但本地电脑telnet时提示无法打开到主机的连接,原因何在?
A:检查本地运营商是否封锁23端口,部分宽带运营商限制住宅用户对外发起23端口的访问请求,此限制无法通过修改本地配置绕过,只能改用非标准端口映射或使用SSH,先尝试用手机4G/5G热点连接测试,用此方法快速判断本地网络是否被封。
Q:虚拟机用NAT模式上网,端口映射也做了,为什么外网还是访问不了23端口?
A:NAT模式下宿主机需要做端口转发,将宿主机的某个公网端口映射到虚拟机的23端口,同时确认宿主机自身的防火墙是否放行了转发端口,VMware和VirtualBox的端口转发配置位于虚拟机的“网络设置”中,NAT网卡需要勾选“端口转发”或“端口映射”选项。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/670153.html





