当前位置: 首页 > news >正文

[特殊字符] CentOS 7 升级 OpenSSH 10.0p2 完整教程(含 Telnet 备份)

🔹 CentOS 7 升级 OpenSSH 10.0p2 完整教程(含 Telnet 备份)

注意:为了避免升级 SSH 时无法远程登录,建议先启用 Telnet 服务 作为备用连接方式。
CentOS 7 默认 OpenSSH 版本是 7.x,升级到 10.0p2 需要 源码编译,并且优先升级 OpenSSL 3.x 使用,否则 TLS/加密算法可能受限。
OpenSSL 升级教程参考
离线安装方法 先看第八步 执行完成以后在从 下载 OpenSSH 10.0p2 源码 开始


1️⃣ 安装并启用 Telnet 服务

1.1 安装 Telnet 服务

yum install -y telnet-server telnet xinetd

1.2 配置 Telnet

cat <<EOF > /etc/xinetd.d/telnet
service telnet
{flags           = REUSEsocket_type     = streamwait            = nouser            = rootserver          = /usr/sbin/in.telnetdlog_on_failure  += USERIDdisable         = no
}
EOF

1.3 启动 xinetd 服务

默认 /etc/securetty 或 PAM 设置可能禁止 root 通过 Telnet 登录,建议提前创建普通用户并授权 sudo 权限。生产环境应避免 root 远程登录。

systemctl enable xinetd
systemctl start xinetd
systemctl status xinetd

1.4 测试 Telnet

telnet 服务器IP
  • 使用系统账号密码登录
  • 即使 SSH 出问题,也能通过 Telnet 登录服务器

⚠️ 注意:Telnet 明文传输密码,只能在内网使用。SSH 升级完成后,应尽快关闭 Telnet。


2️⃣ 准备工作

切记安装完成ssh服务并测试可以正常登录以后 彻底关闭 telnet 服务

2.1 确认系统版本

cat /etc/centos-release

示例输出:

CentOS Linux release 7.9.2009

2.2 查看当前 OpenSSH 版本

ssh -V

示例输出:

OpenSSH_7.4p1, OpenSSL 1.0.2k-fips

2.3 安装编译依赖

yum groupinstall -y "Development Tools"
yum install -y wget curl gcc make zlib-devel pam-devel \
libselinux-devel openssl-devel bzip2 gcc-c++ libstdc++* libcap*

如果使用 OpenSSL 3.x,请确保先升级 OpenSSL(推荐路径 /usr/local/openssl-3.5.1)。


3️⃣ 下载 OpenSSH 10.0p2 源码

cd /tmp
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-10.0p2.tar.gz
tar -zxvf openssh-10.0p2.tar.gz
cd openssh-10.0p1   ## 官方版本目录命名疑似问题

4️⃣ 配置编译选项

建议在开始安装前先打开至少三个终端窗口 保证卸载ssh服务以后可以继续操作 要是忘记打开也可以telnet登录

4.1 备份并卸载默认 SSH

# 备份配置
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak-2025
cp /etc/pam.d/sshd /etc/pam.d/sshd.bak-2025# 卸载旧版 SSH
yum -y remove openssh

4.2 配置源码编译

./configure \--prefix=/usr/local/openssh-10.0p1 \--sysconfdir=/etc/ssh \--with-ssl-dir=/usr/local/openssl-3.5.1 \--with-zlib \--with-pam \--with-privsep-path=/var/lib/sshd \--with-md5-passwords

参数说明

  • --prefix:安装目录
  • --sysconfdir:配置文件路径
  • --with-ssl-dir:OpenSSL 目录
  • --with-zlib:启用压缩
  • --with-pam:启用 PAM 认证
  • --with-privsep-path:特权分离目录
  • --with-md5-passwords:兼容 MD5 密码

5️⃣ 编译与安装

# 编译
make -j$(nproc)# 配置权限
chmod 600 /etc/ssh/ssh_host_*
chown root.root /etc/ssh/ssh_host_*# 安装
make install
cp -p contrib/redhat/sshd.init /etc/init.d/sshd
chmod +x /etc/init.d/sshd# 配置允许 root 登录(根据需要)
echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config
echo 'UsePAM yes' >> /etc/ssh/sshd_config
mv /etc/pam.d/sshd.bak-2025 /etc/pam.d/sshd# 创建软连接
ln -s /usr/local/openssh-10.0p1/sbin/sshd /usr/sbin/sshd
ln -s /usr/local/openssh-10.0p1/bin/ssh /usr/bin/ssh
ln -s /usr/local/openssh-10.0p1/bin/ssh-keygen /usr/bin/ssh-keygen
ln -s /usr/local/openssh-10.0p1/bin/ssh-keyscan /usr/bin/ssh-keyscan
ln -s /usr/local/openssh-10.0p1/bin/ssh-agent /usr/bin/ssh-agent
ln -s /usr/local/openssh-10.0p1/bin/scp /usr/bin/scp
ln -s /usr/local/openssh-10.0p1/bin/sftp /usr/bin/sftp
ln -s /usr/local/openssh-10.0p1/bin/ssh-add /usr/bin/ssh-add
cp /tmp/openssh-10.0p1/contrib/ssh-copy-id /usr/bin/
chmod +x /usr/bin/ssh-copy-id

6️⃣ 启动 SSH 服务

systemctl daemon-reload
systemctl enable sshd
systemctl restart sshd
systemctl status sshd

7️⃣ 验证升级

ssh -V

输出示例:

OpenSSH_10.0p2, OpenSSL 3.5.1

检查 SSH 服务状态:

ss -tnlp | grep sshd

8️⃣ 离线升级

  • 安装包地址: 百度网盘下载
  • 提取码:up3k

8.1 解压

# 依赖包中包含 telnet 服务和默认 SSH 7.4 服务,方便回退
unzip openssh.zip

8.2 安装依赖包

cd openssh
yum localinstall -y *.rpm  ##  注意这个会安卓所有依赖包 并且telnet服务也会安装上

安装完成后,从 下载 OpenSSH 10.0p2 源码 开始再次执行升级步骤即可。


9️⃣ 回退操作

以为这个测试机为例,只需要重新安装openssh服务即可

## 离线安装包里有ssh7.4的包
cd openssh/openssh  ## 里卖弄有三个包全部安装即可
yum localinstall -y *.rpm## 重启ssh服务
systemctl daemon-reload
systemctl enable sshd
systemctl restart sshd
systemctl status sshd

记得升级完成以后彻底关闭telnet服务

停止 Telnet 服务

systemctl stop xinetd
  • Telnet 是由 xinetd 管理的,所以停止 xinetd 就会停止所有通过它启动的服务,包括 Telnet。

禁止开机自启

systemctl disable xinetd
  • 确保服务器重启后 Telnet 不会自动启动。

删除或禁用 Telnet 配置文件(可选)

mv /etc/xinetd.d/telnet /etc/xinetd.d/telnet.disabled
  • 这样即使 xinetd 启动,也不会加载 Telnet 服务。

验证 Telnet 是否关闭

telnet 127.0.0.1
  • 如果提示 Connection refused 或无法连接,说明已经彻底关闭。

http://www.dtcms.com/a/351809.html

相关文章:

  • 如果 我退休了
  • 汽车域控中Hypervisor方案极致安全原理与弊端
  • APP UI自动化测试的思路总结
  • 破解豆瓣Ajax动态加载:Python爬取完整长评论和短评
  • Java面试实战系列【JVM篇】- JVM内存结构与运行时数据区详解(私有区域)
  • 数据结构:链式队列尝试;0826
  • poi生成word固定表格列宽
  • Spring - 文件上传与下载:真正的企业开发高频需求——Spring Boot文件上传与下载全场景实践指南
  • 位运算卡常技巧详解
  • Charles抓包微信小程序请求响应数据
  • 信号无忧,转决千里:耐达讯自动化PROFIBUS集线器与编码器连接术
  • 快速了解卷积神经网络
  • springweb项目中多线程使用详解
  • 问:单证硕士含金量是否不足?
  • 【Linux 进程】进程程序替换
  • 【GitHub】使用SSH与GitHub交互
  • 工业大模型五层架构全景解析:从算力底座到场景落地的完整链路
  • PyCharm注释详解:TODO、文档注释、注释
  • MySQL 索引:结构、对比与操作实践指南
  • 【合适新人】预测图片教程——如何随机抽取验证集图片进行可视化推理!(附完整代码)
  • DigitalOcean GPU 选型指南(三):中端AI GPU性价比之王 RTX 4000 Ada、A4000、A5000
  • 无人机航拍数据集|第33期 无人机树冠目标检测YOLO数据集5842张yolov11/yolov8/yolov5可训练
  • 【HZ-T536开发板免费体验】无需死记 Linux 命令!用 CangjieMagic 在 HZ-T536 开发板上搭建 MCP 服务器,自然语言轻松控板
  • Java大厂面试全真模拟:从Spring Boot到微服务架构实战
  • 文本转语音TTS工具合集(下)
  • 【强化学习】区分理解: 时序差分(TD)、蒙特卡洛(MC)、动态规划(DP)
  • 计算机底层硬件实现及运行原理通俗书籍推荐
  • 记一次MySQL数据库的操作练习
  • 把 AI 塞进「空调遥控器」——基于 MEMS 温湿阵列的 1 分钟极速房间热场扫描
  • 如何获取当前页面html元素的外层容器元素