RHEL/CentOS 7.9环境中离线安装Telnet服务完整指南

RHEL/CentOS 7.9环境中离线安装Telnet服务完整指南

文章目录

前言:为什么需要离线安装Telnet?

在企业IT环境中,生产服务器通常部署在内网隔离环境中,无法直接访问互联网进行软件安装。当我们需要在这些服务器上配置Telnet服务(尽管从安全角度不推荐)进行简单的远程管理时(比如升级SSH),就需要采用离线安装的方式。本文将详细介绍如何在RHEL/CentOS 7.9系统中离线部署Telnet服务。

重要提示:Telnet协议使用明文传输,包括用户名和密码,存在严重的安全风险。本文仅适用于内部安全隔离环境或测试环境。生产环境强烈推荐使用SSH。

准备工作

1.系统要求

  • 在线环境:一台可以访问互联网的RHEL/CentOS 7.9服务器
  • 离线环境:需要安装Telnet的内网服务器
  • 两台服务器的架构应保持一致(通常为x86_64)

2.软件包需求

软件包 功能 是否必需
telnet Telnet客户端程序 可选
telnet-server Telnet服务器端 必需
xinetd 扩展的互联网服务守护进程 必需

一、在线环境准备安装包

方法一:使用YUM的downloadonly插件(推荐)

这是最简便的方法,可以自动解决依赖关系:

bash 复制代码
# 1. 创建存储目录
mkdir -p /tmp/telnet-offline
cd /tmp/telnet-offline

# 2. 安装downloadonly插件(如果尚未安装)
yum install -y yum-plugin-downloadonly

# 3. 下载telnet及其相关包
yum install --downloadonly --downloaddir=/tmp/telnet-offline \
    telnet telnet-server xinetd

方法二:使用repotrack工具

如果需要更完整的依赖包下载,可以使用repotrack:

bash 复制代码
# 1. 安装yum-utils
yum install -y yum-utils

# 2. 创建存储目录
mkdir -p /tmp/telnet-offline
cd /tmp/telnet-offline

# 3. 下载所有依赖包
repotrack --download_path=/tmp/telnet-offline \
    telnet telnet-server xinetd

方法三:手动下载RPM包

如果无法使用yum工具,可以手动从镜像站点下载:

bash 复制代码
# 查看系统版本和架构
cat /etc/redhat-release
uname -m

# 手动下载示例(版本可能需要调整)
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/telnet-0.17-65.el7_8.x86_64.rpm
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/telnet-server-0.17-65.el7_8.x86_64.rpm
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/xinetd-2.3.15-14.el7.x86_64.rpm

验证下载的包

bash 复制代码
# 查看下载的包数量
ls -lh /tmp/telnet-offline/*.rpm | wc -l

# 查看包列表
ls -l /tmp/telnet-offline/

通常,完整安装telnet-server至少需要4-6个依赖包。

二、传输包到离线环境

将下载的RPM包传输到内网服务器有多种方式:

方式一:使用U盘/移动硬盘

bash 复制代码
# 在线服务器:打包文件
cd ~
tar -czf telnet-packages.tar.gz -C /tmp telnet-offline

# 离线服务器:解压文件
tar -xzf telnet-packages.tar.gz -C /tmp

方式二:内部网络传输

如果内网有文件服务器或允许SCP传输:

bash 复制代码
# 从在线服务器传输到内网中转机
scp -r /tmp/telnet-offline user@internal-server:/tmp/

方式三:使用内部软件仓库(推荐企业环境使用)

对于大规模部署,建议搭建内部YUM仓库:

bash 复制代码
# 在内部服务器上创建仓库目录
mkdir -p /var/www/html/repos/centos7

# 复制所有RPM包到仓库目录
cp /tmp/telnet-offline/*.rpm /var/www/html/repos/centos7/

# 创建仓库元数据
createrepo /var/www/html/repos/centos7/

# 配置离线服务器的yum源
cat > /etc/yum.repos.d/local.repo << EOF
[local]
name=Local Repository
baseurl=http://internal-server/repos/centos7/
enabled=1
gpgcheck=0
EOF

三、离线安装Telnet

方法一:使用yum localinstall(推荐)

bash 复制代码
# 1. 切换到包目录
cd /tmp/telnet-offline

# 2. 使用yum本地安装,自动解决依赖关系
yum localinstall -y *.rpm

# 或者指定具体包名
yum localinstall -y telnet-server-*.rpm xinetd-*.rpm

我们可以看到,由于使用CentOS7.9的源,对于红帽操作系统还是有一些不兼容的错误,具体的处理方案可以见第八部分。这里我们用方法二进行安装即可。

方法二:使用rpm命令安装

如果yum不可用,可以使用rpm命令,但需要手动处理依赖:

bash 复制代码
# 安装xinetd及其依赖
rpm -ivh xinetd-*.rpm

# 安装telnet-server
rpm -ivh telnet-server-*.rpm

# 安装telnet客户端(可选)
rpm -ivh telnet-*.rpm

如果遇到依赖错误,可能需要按特定顺序安装。可以尝试以下顺序:

bash 复制代码
# 查看依赖关系,按依赖顺序安装
rpm -qpR *.rpm | sort | uniq

# 常见安装顺序
rpm -ivh libtelnet-*.rpm
rpm -ivh telnet-*.rpm
rpm -ivh xinetd-*.rpm
rpm -ivh telnet-server-*.rpm

四、配置与启动Telnet服务

  1. 配置Telnet服务
bash 复制代码
# 编辑telnet配置文件
vim /etc/xinetd.d/telnet

将文件内容修改为:

bash 复制代码
service telnet
{
    flags           = REUSE
    socket_type     = stream
    wait            = no
    user            = root
    server          = /usr/sbin/in.telnetd
    log_on_failure  += USERID
    disable         = no
}
  1. 启动服务
bash 复制代码
# 重新启动xinetd服务
systemctl restart xinetd

# 设置开机自启
systemctl enable xinetd

# 检查服务状态
systemctl status xinetd
  1. 配置防火墙(如果启用)
bash 复制代码
# 添加telnet服务到防火墙
firewall-cmd --permanent --add-service=telnet

# 或者直接开放23端口
firewall-cmd --permanent --add-port=23/tcp

# 重新加载防火墙配置
firewall-cmd --reload

# 查看已开放的端口
firewall-cmd --list-all
  1. SELinux配置(如果启用)
bash 复制代码
# 检查SELinux状态
sestatus

# 如果SELinux启用,需要允许telnet
setsebool -P telnetd_connect_any=1

# 或者临时禁用SELinux(不推荐生产环境)
setenforce 0

五、验证与测试

  1. 检查软件包安装
bash 复制代码
# 查看已安装的telnet相关包
rpm -qa | grep -E 'telnet|xinetd'

# 应该看到类似输出:
# telnet-0.17-65.el7_8.x86_64
# telnet-server-0.17-65.el7_8.x86_64
# xinetd-2.3.15-14.el7.x86_64
  1. 检查服务运行状态
bash 复制代码
# 检查xinetd服务
systemctl status xinetd

# 检查telnet端口监听
netstat -tlnp | grep :23
ss -tlnp | grep :23
  1. 本地连接测试
bash 复制代码
# 使用telnet客户端连接本地
telnet 127.0.0.1

# 或者使用netcat测试
echo "" | nc -v 127.0.0.1 23

如果root测试失败,可能是因为RHEL/CentOS 系统的安全机制:默认禁止 root 用户通过 Telnet(pts 伪终端)登录,我们可以创建专用测试用户进行测试验证:

bash 复制代码
# 1. 创建测试用户
useradd telnetuser
echo "telnetuser:YourPassword123" | chpasswd  # 修改为强密码

# 2. 设置可登录 Shell(如非默认)
usermod -s /bin/bash telnetuser

# 3. 测试登录(无需改系统配置!)
telnet 127.0.0.1
# 输入用户名:telnetuser
# 输入密码:YourPassword123

# 4. 登录后切换 root(如需)
su - root

到这里表示telnet登录配置成功。远程登录则是网络配置的范畴,注意检查防火墙等安全策略限制。

  1. 远程连接测试

从同一网络内的其他机器测试:
telnet [服务器IP地址]

成功连接后,应该看到登录提示。

六、故障排除

常见问题1:连接被拒绝

shell 复制代码
# 检查服务是否运行
systemctl status xinetd

# 检查配置文件是否正确
cat /etc/xinetd.d/telnet | grep disable

# 检查端口是否监听
netstat -tlnp | grep :23

常见问题2:防火墙阻止连接

shell 复制代码
# 临时关闭防火墙测试
systemctl stop firewalld

# 如果关闭防火墙后可以连接,则需要正确配置防火墙规则

常见问题3:SELinux阻止连接

shell 复制代码
# 查看SELinux日志
ausearch -m avc -ts recent

# 临时禁用SELinux测试
setenforce 0

常见问题4:依赖包缺失

如果安装时缺少依赖包,可以在在线环境使用以下命令查找:

bash 复制代码
# 查找特定包的依赖
yum deplist telnet-server
# 下载缺失的依赖包
yumdownloader [包名]

七、安全加固建议

虽然Telnet本身不安全,但在必须使用的情况下可以采取以下措施:

  1. 限制访问IP
shell 复制代码
# 编辑telnet配置文件
vi /etc/xinetd.d/telnet

添加访问控制:

bash 复制代码
service telnet
{
    # ... 其他配置 ...
    only_from       = 192.168.1.0/24  # 只允许特定网段
    no_access       = 192.168.1.100   # 拒绝特定IP
    access_times    = 08:00-17:00     # 访问时间限制
}
  1. 使用TCP Wrappers
bash 复制代码
# 编辑hosts.allow文件
vi /etc/hosts.allow

# 添加以下内容
telnet: 192.168.1.0/255.255.255.0
telnet: 10.0.0.0/255.0.0.0

# 编辑hosts.deny文件
vi /etc/hosts.deny

# 添加以下内容
telnet: ALL
  1. 定期监控日志
shell 复制代码
# 查看telnet连接日志
tail -f /var/log/secure | grep telnet

# 或查看xinetd日志
tail -f /var/log/messages | grep xinetd

八、故障处理:没有有效订阅的RHEL 7.9离线安装Telnet解决方案

RHEL是商业软件,需要有效的Red Hat订阅才能从官方仓库获取软件包。没有订阅时,RHEL系统无法访问官方软件仓库,导致您无法使用yum install命令下载软件包。

解决方案:使用CentOS软件包(临时方案)

重要提示: RHEL 7.9和CentOS 7.9的软件包高度兼容,但RHEL系统会将其识别为"Red Hat"而非"CentOS"。我们需要修改系统标识以避免文件冲突。
步骤1:备份原始系统标识

bash 复制代码
# 备份RHEL的版本标识文件
cp /etc/redhat-release /etc/redhat-release.bak
cp /etc/os-release /etc/os-release.bak
cp /etc/system-release /etc/system-release.bak

步骤2:修改系统标识为CentOS

bash 复制代码
# 将RHEL标识修改为CentOS标识
echo "CentOS Linux release 7.9.2009 (Core)" > /etc/redhat-release
echo "CentOS Linux release 7.9.2009 (Core)" > /etc/system-release
echo "CentOS Linux release 7.9.2009 (Core)" > /etc/centos-release

步骤3:下载CentOS软件包

bash 复制代码
# 创建存储目录
mkdir -p /tmp/telnet-offline
cd /tmp/telnet-offline

# 下载telnet相关包(使用CentOS镜像)
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/telnet-0.17-65.el7_8.x86_64.rpm
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/telnet-server-0.17-65.el7_8.x86_64.rpm
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/xinetd-2.3.15-14.el7.x86_64.rpm

步骤4:安装软件包

bash 复制代码
# 安装xinetd及其依赖
rpm -ivh xinetd-2.3.15-14.el7.x86_64.rpm

# 安装telnet-server
rpm -ivh telnet-server-0.17-65.el7_8.x86_64.rpm

# 安装telnet客户端(可选)
rpm -ivh telnet-0.17-65.el7_8.x86_64.rpm

步骤5:配置Telnet服务

bash 复制代码
# 编辑telnet配置文件
vi /etc/xinetd.d/telnet

# 修改为以下内容:
service telnet
{
    flags           = REUSE
    socket_type     = stream
    wait            = no
    user            = root
    server          = /usr/sbin/in.telnetd
    log_on_failure  += USERID
    disable         = no
}

# 启动服务
systemctl restart xinetd
systemctl enable xinetd

# 配置防火墙
firewall-cmd --permanent --add-service=telnet
firewall-cmd --reload

步骤6:验证安装

bash 复制代码
# 检查软件包安装
rpm -qa | grep -E 'telnet|xinetd'

# 检查服务状态
systemctl status xinetd

# 检查端口监听
netstat -tlnp | grep :23

重要注意事项

  1. 这不是官方推荐的方案:RHEL需要有效订阅才能获得官方支持。使用此方案可能导致某些RHEL特定功能无法正常工作。
  2. 临时解决方案:此方案仅适用于短期使用或测试环境。
  3. 长期建议:
    获取RHEL的30天免费试用订阅(Red Hat提供)
    考虑迁移到免费的RHEL替代品:CentOS Stream、Rocky Linux或AlmaLinux
    这些替代品与RHEL完全兼容,且不需要订阅
  4. 为什么这个方案可行?
    RHEL 7.9和CentOS 7.9的软件包在功能上几乎相同
    通过修改系统标识,使RHEL系统"认为"自己是CentOS
    从而避免了文件冲突(/etc/os-release等文件的冲突)
  5. 重要提醒
    在生产环境中,强烈建议使用RHEL的正式订阅或迁移到免费的RHEL兼容发行版。RHEL没有有效订阅的情况下运行,可能导致安全漏洞无法及时修复,且无法获得Red Hat的技术支持。
  6. 如果您需要长期使用,建议考虑以下选项:
    申请RHEL 30天免费试用订阅
    迁移到Rocky Linux(RHEL的官方兼容替代品)
    迁移到AlmaLinux(RHEL的官方兼容替代品)

总结

本文详细介绍了RHEL/CentOS 7.9系统中离线安装Telnet服务的完整流程。整个过程可分为四个关键阶段:在线下载软件包、传输到内网环境、离线安装部署、配置与验证。

核心要点总结:

  1. 在线环境准备:通过yum downloadonly、repotrack或手动下载三种方式获取telnet、telnet-server和xinetd的完整安装包。

  2. 内网传输方案:使用U盘/移动硬盘、内部网络传输或搭建内部YUM仓库等多种方式,将安装包从在线环境传输到内网服务器。

  3. 离线安装 :优先使用yum localinstall自动解决依赖,或通过rpm命令按顺序手动安装。

  4. 配置与安全:编辑xinetd配置文件启用Telnet服务,配置防火墙和SELinux,并进行必要的访问控制和日志监控。

  5. RHEL特殊处理:针对无订阅的RHEL系统,可通过临时修改系统标识使用CentOS兼容包,但建议长期使用RHEL订阅或迁移到兼容发行版。

重要安全提醒:

Telnet协议以明文传输数据,存在严重安全隐患,仅适用于完全隔离的内网或测试环境。生产环境强烈建议使用SSH等加密协议进行远程管理。

通过本文的指导,您可以在无法访问互联网的RHEL/CentOS 7.9环境中顺利完成Telnet服务的部署,同时了解相关的安全风险和替代方案。

相关推荐
Trouvaille ~2 小时前
【Linux】进程信号(三):信号捕捉与操作系统运行原理
linux·运维·服务器·c++·操作系统·信号·中断
zl_dfq2 小时前
Linux 之 【进程间通信】(消息队列与信号量、Systrm VIPC在内核中数据结构设计)
linux
信创天地2 小时前
国产化数据库深度运维:性能调优与故障排查实战指南
运维·数据库·安全·elk·自动化·rabbitmq
木卫二号Coding2 小时前
Docker-构建自己的Web-Linux系统-镜像colinchang/ubuntu-desktop:22.04
linux·ubuntu·docker
维度攻城狮2 小时前
Ubuntu突然无法中文输入的问题解决办法
linux·运维·ubuntu
Coder个人博客2 小时前
Linux6.19-ARM64 mm Makefile子模块深入分析
linux·安全·车载系统·系统架构·系统安全·鸿蒙系统·安全架构
猫猫的小茶馆2 小时前
【Linux 驱动开发】五. 设备树
linux·arm开发·驱动开发·stm32·嵌入式硬件·mcu·硬件工程
岱宗夫up3 小时前
基于ROS的视觉导航系统实战:黑线循迹+激光笔跟随双模态实现(冰达机器人Nano改造)
linux·python·机器人·ros
eWidget3 小时前
Shell输入输出(一):echo/printf输出,格式控制与颜色设置
运维·数据库·运维开发