注意 :为了避免升级 SSH 时无法远程登录,建议先启用 Telnet 服务 作为备用连接方式。
CentOS 7 默认 OpenSSH 版本是 7.x ,升级到 10.2p1 需要 源码编译 ,并且优先升级 OpenSSL 3.x 使用,否则 TLS/加密算法可能受限。
下面给两个任选其一即可:
离线安装方法:先看第八步,执行完成以后再从「下载 OpenSSH 10.2p1 源码」开始操作。
一、安装并启用 Telnet 服务
1. 安装 Telnet 服务
bash
yum install -y telnet-server telnet xinetd
2. 配置 Telnet
bash
cat <<EOF > /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
}
EOF
3. 启动 xinetd 服务
默认
/etc/securetty或 PAM 设置可能禁止 root 通过 Telnet 登录,建议提前创建普通用户并授权 sudo 权限。生产环境应避免 root 远程登录。
bash
systemctl enable xinetd
systemctl start xinetd
systemctl status xinetd
4. 测试 Telnet
bash
telnet 服务器IP
- 使用系统账号密码登录
- 即使 SSH 出问题,也能通过 Telnet 登录服务器
⚠️ 注意:Telnet 明文传输密码,只能在内网使用。SSH 升级完成后,应尽快关闭 Telnet。
二、准备工作
重要提醒:安装完成 SSH 服务并测试可以正常登录以后,一定要彻底关闭 Telnet 服务。
1. 确认系统版本
bash
cat /etc/centos-release
示例输出:
CentOS Linux release 7.9.2009
2. 查看当前 OpenSSH 版本
bash
ssh -V
示例输出:
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips
3. 安装编译依赖
bash
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.4)。
三、下载 OpenSSH 10.2p1 源码
bash
cd /tmp
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-10.2p1.tar.gz
tar -zxvf openssh-10.2p1.tar.gz
cd openssh-10.2p1 ## 官方版本目录命名疑似问题
四、配置编译选项
建议:在开始安装前先打开至少三个终端窗口,保证卸载 SSH 服务以后可以继续操作。要是忘记打开也可以通过 Telnet 登录。
1. 备份并卸载默认 SSH
bash
# 备份配置
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak-2026
cp /etc/pam.d/sshd /etc/pam.d/sshd.bak-2026
# 卸载旧版 SSH
yum -y remove openssh
2. 配置源码编译
bash
./configure \
--prefix=/usr/local/openssh-10.2p1 \
--sysconfdir=/etc/ssh \
--with-ssl-dir=/usr/local/openssl-3.5.4 \
--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 密码
五、编译与安装
bash
# 编译
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.2p1/sbin/sshd /usr/sbin/sshd
ln -s /usr/local/openssh-10.2p1/bin/ssh /usr/bin/ssh
ln -s /usr/local/openssh-10.2p1/bin/ssh-keygen /usr/bin/ssh-keygen
ln -s /usr/local/openssh-10.2p1/bin/ssh-keyscan /usr/bin/ssh-keyscan
ln -s /usr/local/openssh-10.2p1/bin/ssh-agent /usr/bin/ssh-agent
ln -s /usr/local/openssh-10.2p1/bin/scp /usr/bin/scp
ln -s /usr/local/openssh-10.2p1/bin/sftp /usr/bin/sftp
ln -s /usr/local/openssh-10.2p1/bin/ssh-add /usr/bin/ssh-add
cp contrib/ssh-copy-id /usr/bin/ # 此步骤再 openssh 编译目录操作
chmod +x /usr/bin/ssh-copy-id
六、启动 SSH 服务
bash
systemctl daemon-reload
systemctl enable sshd
systemctl restart sshd
systemctl status sshd
七、验证升级
bash
ssh -V
输出示例:
bash
OpenSSH_10.2p1, OpenSSL 3.5.4 30 Sep 2025
检查 SSH 服务状态:
bash
ss -tnlp | grep sshd
八、离线升级
- 安装包地址:百度网盘下载
- 提取码:
i23q
1. 解压
bash
# 依赖包中包含 telnet 服务和默认 SSH 7.4 服务,方便回退
unzip openssh.zip
2. 安装依赖包
bash
cd openssh
yum localinstall -y *.rpm ## 注意这个会安装所有依赖包,并且 telnet 服务也会安装上
安装完成后,从「下载 OpenSSH 10.0p2 源码」开始再次执行升级步骤即可。
九、回退操作
以测试机为例,只需要重新安装 openssh 服务即可:
bash
## 离线安装包里有 ssh7.4 的包
cd openssh/openssh ## 里面有三个包,全部安装即可
yum localinstall -y *.rpm
## 重启 ssh 服务
systemctl daemon-reload
systemctl enable sshd
systemctl restart sshd
systemctl status sshd
十、关闭 Telnet 服务
1. 停止 Telnet 服务
bash
systemctl stop xinetd
- Telnet 是由
xinetd管理的,所以停止xinetd就会停止所有通过它启动的服务,包括 Telnet。
2. 禁止开机自启
bash
systemctl disable xinetd
- 确保服务器重启后 Telnet 不会自动启动。
3. 删除或禁用 Telnet 配置文件(可选)
bash
mv /etc/xinetd.d/telnet /etc/xinetd.d/telnet.disabled
- 这样即使
xinetd启动,也不会加载 Telnet 服务。
4. 验证 Telnet 是否关闭
bash
telnet 127.0.0.1
- 如果提示
Connection refused或无法连接,说明已经彻底关闭。
总结
本文详细介绍了 CentOS 7 系统升级 OpenSSH 到 10.0p2 版本的完整步骤,包括:
- 备用连接:通过 Telnet 服务确保升级过程中不会失去远程连接
- 升级流程:从准备工作、源码下载、编译安装到服务启动的完整步骤
- 离线升级:提供了离线安装包,方便无网络环境使用
- 回退方案:详细的回退步骤,确保在升级失败时可以快速恢复
- 安全加固:升级完成后彻底关闭 Telnet 服务,保障系统安全
通过本文的步骤,您可以安全、可靠地将 CentOS 7 系统的 OpenSSH 升级到最新版本,提升系统安全性和稳定性。
温馨提示:操作前请务必备份重要数据,建议在测试环境中先进行演练,确保熟悉整个流程后再在生产环境中操作。