在Linux系统中,Telnet是一种基于TCP/IP的协议,用于远程登录和管理设备,通过命令行界面实现交互式操作,尽管因其明文传输特性存在安全隐患,但在内网调试、兼容旧设备等场景中仍有应用,本文将详细说明Linux系统启用Telnet服务的完整流程,涵盖安装、配置、防火墙设置及测试方法,帮助用户快速搭建环境。
安装Telnet服务
不同Linux发行版的包管理器不同,需根据系统选择对应的安装命令,以下是主流发行版的安装步骤:
CentOS/RHEL系列
使用yum
(CentOS 7及以下)或dnf
(CentOS 8+)安装telnet-server
包,这是提供Telnet服务的核心组件。
# CentOS 7及以下 yum install -y telnet-server # CentOS 8+ dnf install -y telnet-server
Ubuntu/Debian系列
使用apt
安装telnetd
包,该包包含Telnet服务器和客户端工具。
# 更新软件源 apt update # 安装telnetd apt install -y telnetd
安装命令对照表
发行版系列 | 包管理器 | 安装命令 |
---|---|---|
CentOS 7- | yum | yum install -y telnet-server |
CentOS 8+ | dnf | dnf install -y telnet-server |
Ubuntu/Debian | apt | apt update && apt install -y telnetd |
配置Telnet服务
安装完成后,需根据系统版本调整服务配置,确保Telnet能正常启动并接受连接。
CentOS/RHEL系列(基于xinetd或systemd)
- CentOS 6及以下:依赖
xinetd
超级服务器,需修改配置文件/etc/xinetd.d/telnet
,将disable = yes
改为disable = no
,保存后重启xinetd
服务:systemctl restart xinetd
- CentOS 7及以上:使用
systemd
管理服务,直接启动并启用telnet.socket
(监听23端口):systemctl enable --now telnet.socket
Ubuntu/Debian系列
默认安装后telnetd
服务可能未自动启动,需手动启用:
systemctl enable --now openbsd-inetd # Ubuntu/Debian使用openbsd-inetd管理Telnet
配置登录用户(可选)
出于安全考虑,默认可能禁止root用户通过Telnet登录,如需允许,可编辑/etc/securetty
文件,添加telnet
行(或直接添加root
用户名,具体取决于系统版本):
echo "telnet" >> /etc/securetty # 允许root通过Telnet登录(不推荐生产环境使用)
配置防火墙
Telnet默认使用23端口,需开放该端口并允许TCP流量,否则连接会被防火墙拦截。
CentOS 7+(firewalld)
firewall-cmd --permanent --add-port=23/tcp # 永久开放23端口 firewall-cmd --reload # 重新加载防火墙规则
CentOS 6(iptables)
iptables -A INPUT -p tcp --dport 23 -j ACCEPT # 允许23端口TCP流量 service iptables save # 保存规则
Ubuntu/Debian(ufw)
ufw allow 23/tcp # 开放23端口 ufw reload # 重启防火墙
防火墙配置对照表
发行版系列 | 防火墙工具 | 开放23端口命令 |
---|---|---|
CentOS 7+ | firewalld | firewall-cmd –permanent –add-port=23/tcp && firewall-cmd –reload |
CentOS 6 | iptables | iptables -A INPUT -p tcp –dport 23 -j ACCEPT && service iptables save |
Ubuntu/Debian | ufw | ufw allow 23/tcp && ufw reload |
测试Telnet连接
配置完成后,可通过本地或远程设备测试连接是否正常。
本地测试
在服务器终端执行以下命令,测试本地Telnet服务:
telnet localhost 23
若成功,会显示Connected to localhost
,并进入登录界面,输入用户名和密码即可登录。
远程测试
在其他设备上执行以下命令(替换服务器IP
为实际IP):
telnet 服务器IP 23
若连接成功,说明Telnet服务已正常启用;若提示“Connection refused”,需检查服务状态、防火墙配置及23端口是否开放。
安全提示
Telnet协议传输所有数据(包括密码)均为明文,极易被窃听,强烈建议生产环境使用SSH(OpenSSH)替代,如必须使用Telnet,需注意:
- 仅在内网可信环境中使用,避免暴露在公网;
- 限制登录用户,避免使用root账户;
- 定期检查日志(
/var/log/secure
或/var/log/auth.log
),监控异常登录行为。
相关问答FAQs
Q1:Telnet连接时提示“Connection refused”,如何排查?
A:可能原因及解决方案:
- 服务未启动:检查服务状态(
systemctl status telnet.socket
或systemctl status xinetd
),未启动则手动启动; - 防火墙拦截:确认23端口已开放(
firewall-cmd --list-ports
或iptables -L -n | grep 23
),未开放则按本文第三步配置; - 端口未监听:使用
netstat -tuln | grep 23
检查23端口是否处于LISTEN
状态,若未监听,需重新安装或重启Telnet服务。
Q2:Telnet和SSH有什么区别?为什么推荐使用SSH?
A:主要区别如下:
| 特性 | Telnet | SSH(Secure Shell) |
|————–|———————————|———————————–|
| 传输安全性 | 明文传输,密码易被窃听 | 加密传输(RSA/AES),数据安全 |
| 默认端口 | 23 | 22 |
| 功能支持 | 仅简单远程登录 | 支持端口转发、隧道、密钥登录等 |
| 推荐场景 | 内网临时调试、旧设备兼容 | 所有生产环境、公网访问 |
SSH通过加密算法保护数据安全,且功能更丰富,是远程管理的首选协议,Telnet仅建议在无法使用SSH的特定场景下临时使用。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/23724.html