在CentOS系统中开启Telnet服务主要包含安装软件包、配置守护进程以及调整防火墙策略三个核心步骤,尽管SSH(Secure Shell)凭借其加密特性已成为现代服务器远程管理的标准协议,但在特定网络环境下的设备调试、端口连通性测试或维护不支持SSH的旧系统时,Telnet依然发挥着不可替代的作用,本文将基于CentOS 7及CentOS 8的主流环境,详细阐述从零开始部署并启用Telnet服务的完整流程,同时涵盖安全配置与故障排查的专业建议。
安装Telnet服务端与客户端组件
在CentOS系统中,Telnet并非默认预装组件,因此首要任务是确保相关的软件包已正确安装,Telnet分为服务端软件(允许远程连接本机)和客户端软件(用于连接其他机器),通常建议同时安装以便于测试。



使用yum或dnf包管理器可以快速完成安装,对于CentOS 7,使用以下命令:
yum install y telnet telnetserver xinetd
对于CentOS 8或Stream版本,虽然可能需要启用特定的仓库,但命令逻辑类似:
dnf install y telnet telnetserver xinetd
这里需要特别注意的是xinetd(扩展互联网守护进程),Telnet服务通常不作为独立服务持续运行在后台,而是由xinetd进行管理,当有连接请求到达23端口时,xinetd才会唤醒Telnet服务进行处理,这种机制能有效节省系统资源,安装xinetd是开启Telnet服务的关键前置步骤。
配置xinetd服务与启动Telnet
安装完成后,Telnet服务默认是处于禁用状态的,管理员需要手动修改配置文件以激活服务,Telnet的配置文件通常位于/etc/xinetd.d/telnet。
使用文本编辑器(如vi或vim)打开该文件:
vi /etc/xinetd.d/telnet
在文件中找到disable参数,将其值从yes修改为no,配置片段示例如下:
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
disable = no
} 这一修改告诉xinetd守护进程允许Telnet服务接入,保存并退出编辑器后,需要启动并设置xinetd开机自启,由于Telnet受控于xinetd,只需管理xinetd服务即可:
systemctl start xinetd systemctl enable xinetd
Telnet服务实际上已经准备就绪,监听在默认的TCP 23端口上,为了验证服务状态,可以使用netstat或ss命令查看端口监听情况:
ss antlp | grep :23
如果输出结果显示23端口处于LISTEN状态,说明服务启动成功。
防火墙与SELinux安全策略配置
在现代Linux发行版中,安全策略往往是阻碍服务连通性的主要原因,即便服务本身已启动,如果防火墙未放行流量,外部连接依然会失败。
配置Firewalld防火墙:
CentOS默认使用firewalld作为防火墙管理工具,管理员需要将Telnet服务的默认端口(23/TCP)添加到信任区域,并确保规则永久生效。
firewallcmd zone=public addport=23/tcp permanent firewallcmd reload
执行第一条命令将端口规则写入配置文件,第二条命令重载防火墙使规则立即生效,如果服务器环境使用的是iptables,则需执行:
iptables A INPUT p tcp dport 23 j ACCEPT service iptables save
处理SELinux限制:
SELinux(SecurityEnhanced Linux)的强制访问控制机制可能会阻止Telnet服务访问特定资源或绑定端口,虽然默认情况下开启Telnet端口通常不需要额外的布尔值调整,但如果遇到连接后立即断开或无法登录的情况,建议检查SELinux状态,若为了测试方便,可以临时将其设置为Permissive模式:
setenforce 0
在生产环境中,不建议直接关闭SELinux,正确的做法是使用audit.log分析拒绝日志,并利用chcon或semanage命令调整上下文或布尔值,例如开启telnet_disable_trans等特定策略(视具体版本而定)。
连接测试与常见故障排查
完成上述配置后,即可进行连接测试,在局域网内的另一台Linux或Windows机器上,使用Telnet客户端连接服务器IP:
telnet <服务器IP> 23
如果配置正确,屏幕将显示Connected to ...或类似字样,并提示输入登录用户名和密码,此时输入CentOS系统的普通用户或root账户密码即可登录。
常见故障及解决方案:
连接超时: 通常由防火墙阻断引起,请检查
firewalld规则是否正确重载,以及云服务器提供商的安全组策略是否放行了23端口。连接被拒绝: 这意味着目标端口未开放或服务未启动,请检查xinetd服务状态(
systemctl status xinetd),确认/etc/xinetd.d/telnet文件中disable确实为no。无法登录Root用户: 出于安全考虑,默认情况下Telnet可能禁止root用户直接远程登录,这是一种安全机制,防止root密码被暴力破解,建议先以普通用户登录,然后使用
su切换至root用户,如果必须允许root登录,需修改/etc/securetty文件或/etc/pam.d/login配置,但这会极大降低系统安全性,不推荐操作。
安全考量与SSH替代方案
必须强调的是,Telnet协议是明文传输的,这意味着用户的登录名、密码以及传输的所有数据都以纯文本形式在网络中传播,极易被中间人攻击(如嗅探)截获,在公网环境或对安全性要求较高的生产环境中,严禁长期开启Telnet服务。
专业的解决方案是: 仅在局域网内且用于紧急维护或网络设备调试时开启Telnet,日常管理应完全依赖SSH协议,SSH通过加密技术保障了数据的完整性和机密性,如果开启Telnet是为了测试端口连通性(例如检查某台Web服务器的80端口是否开放),管理员只需在客户端安装Telnet即可,无需在目标服务器上开启Telnet服务端,使用命令telnet <目标IP> <目标端口>,根据返回结果(如Connected、Escape character is...或Connection refused)即可判断端口状态,这是网络运维中非常实用的技巧。
相关问答
Q1:为什么在CentOS 7中使用Telnet连接时提示“Connection refused”? A1:出现“Connection refused”通常意味着服务未在监听23端口或被防火墙主动拒绝,首先检查是否安装了telnetserver和xinetd,并确认/etc/xinetd.d/telnet配置文件中disable的值已改为no,检查systemctl status xinetd确认服务是否正在运行,排查本地防火墙及云服务商的安全组是否放行了TCP 23端口。
Q2:如何在不开启Telnet服务端的情况下测试远程端口连通性? A2:这是运维中更推荐的做法,您只需在本地客户端安装Telnet工具(Linux下通常已包含,Windows下可在“启用或关闭Windows功能”中开启Telnet客户端),使用命令telnet <目标IP> <端口号>即可,如果连接成功,会显示Connected提示;如果失败,则会显示无法打开连接,这种方式不需要目标服务器开启Telnet服务,仅利用TCP协议进行握手检测。
希望本文的详细解析能帮助您顺利在CentOS系统中配置和使用Telnet服务,如果您在操作过程中遇到任何问题,或者有更独特的网络排错经验,欢迎在评论区留言交流,让我们一起探讨更多服务器运维技术。

