OpenSSL 与 OpenSSH 离线升级至最新版本 9.9p2

OpenSSL 与 OpenSSH 离线升级至最新版本 9.9p2

一、前言

在网络安全日益重要的今天,保持系统中的 OpenSSL 和 OpenSSH 为最新版本是至关重要的。然而,在一些内网环境中,由于网络限制,无法直接从互联网上下载最新的软件包进行升级。本文将详细介绍如何在离线环境下将 OpenSSL 和 OpenSSH 升级到最新版本 9.9p2。

二、准备工作

2.1 下载所需软件包

https://wwyq.lanzouo.com/iQD0730558gd

在有网络的环境中,下载以下软件包:

  • xinetd-2.3.15-14.el7.x86_64.rpm
  • telnet-0.17-64.el7.x86_64.rpm
  • telnet-server-0.17-64.el7.x86_64.rpm
  • openssl-1.1.1w.tar.gz
  • openssh-9.9p2-offline.tar.gz

2.2 上传软件包

将下载好的软件包上传到内网机的相应目录,例如:

  • xinetdtelnet 相关的 rpm 包上传到内网机任意可访问目录。
  • openssl-1.1.1w.tar.gz 上传到 /root/ssh_upgrade 目录。
  • openssh-9.9p2-offline.tar.gz 上传到 /root/sshupdate 目录。

三、安装 Telnet 服务

安装 Telnet 服务是为了避免在 SSH 升级失败时无法进行远程连接。

# 安装 xinetd
rpm -ivh xinetd-2.3.15-14.el7.x86_64.rpm
# 安装 telnet
rpm -ivh telnet-0.17-64.el7.x86_64.rpm  
# 安装 telnet 服务端
rpm -ivh telnet-server-0.17-64.el7.x86_64.rpm

# 编辑 Telnet 服务配置文件
vi /etc/xinetd.d/telnet

vi 编辑器中,输入以下内容:

service telnet
{
    flags           = REUSE
    socket_type     = stream
    wait            = no
    user            = root
    server          = /usr/sbin/in.telnetd
    log_on_failure  += USERID
    disable         = no  # 关键:启用 Telnet 服务
}

保存并退出 vi 编辑器,然后启动 xinetd 服务并设置开机自启:

systemctl start xinetd    # 启动服务
systemctl enable xinetd   # 设置开机自启

注意:需要放开 23 端口的防火墙富规则配置。

四、升级 OpenSSL

# 进入 OpenSSL 升级目录
cd /root/ssh_upgrade
# 备份旧的 OpenSSL 目录
cp -a /usr/local/openssl /media/openssl
# 解压 OpenSSL 压缩包
tar -zxvf openssl-1.1.1w.tar.gz -C /usr/local/  # 解压到 /usr/local/openssl 目录
# 配置系统库路径
echo "/usr/local/openssl/lib" > /etc/ld.so.conf.d/openssl-1.1.1w.conf
# 刷新系统库缓存
ldconfig  
# 备份旧的 OpenSSL 命令
mv /usr/bin/openssl /usr/bin/openssl.old  
# 创建新的 OpenSSL 命令软链接
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
# 验证 OpenSSL 版本
openssl version  # 应输出:OpenSSL 1.1.1w  xxxxxx
# 验证系统库中 libssl 路径
ldconfig -p | grep libssl  # 应显示 /usr/local/openssl/lib/libssl.so.1.1

五、升级 OpenSSH

5.1 前期准备

5.1.1 上传安装包

确保 openssh-9.9p2-offline.tar.gz 已上传到 /root/sshupdate 目录,并且包内包含完整文件,如 usr/bin/sshusr/sbin/sshdusr/libexec/sshd-session 等。

5.1.2 备份旧版本文件
# 备份配置文件
mkdir -p /opt/openssh_backup/etc_ssh
cp -r /etc/ssh/* /opt/openssh_backup/etc_ssh/

# 备份二进制文件
mkdir -p /opt/openssh_backup/bin
cp /usr/bin/ssh /opt/openssh_backup/bin/
cp /usr/bin/scp /opt/openssh_backup/bin/
cp /usr/bin/sftp /opt/openssh_backup/bin/
cp /usr/sbin/sshd /opt/openssh_backup/bin/

5.2 解压并替换 OpenSSH 文件

# 进入解压目录
cd /root/sshupdate
# 解压安装包
tar -zxvf openssh-9.9p2-offline.tar.gz
# 进入解压后的目录
cd openssh-package  

# 替换客户端工具
cp -f ./usr/bin/ssh /usr/bin/
cp -f ./usr/bin/scp /usr/bin/
cp -f ./usr/bin/sftp /usr/bin/
cp -f ./usr/bin/ssh-keygen /usr/bin/

# 替换服务端程序
cp -f ./usr/sbin/sshd /usr/sbin/

# 替换会话管理程序(解决 "sshd-session不存在" 报错)
cp -f ./usr/libexec/sshd-session /usr/libexec/

# 替换配置文件
cp -f ./etc/ssh/sshd_config /etc/ssh/
cp -f ./etc/ssh/ssh_config /etc/ssh/

5.3 修复权限

# 修复配置文件权限
chmod 600 /etc/ssh/sshd_config  # 严格权限,否则启动失败
chmod 644 /etc/ssh/ssh_config

# 修复密钥文件权限(解决 "UNPROTECTED PRIVATE KEY" 报错)
chmod 600 /etc/ssh/ssh_host_rsa_key
chmod 600 /etc/ssh/ssh_host_ecdsa_key
chmod 600 /etc/ssh/ssh_host_ed25519_key
chmod 644 /etc/ssh/ssh_host_*_key.pub  # 公钥权限

# 修复程序文件权限
chmod 755 /usr/sbin/sshd
chmod 755 /usr/bin/ssh
chmod 755 /usr/libexec/sshd-session  # 确保可执行

# 创建权限分离目录(解决 "Missing privilege separation directory" 报错)
mkdir -p /var/lib/sshd
chmod 755 /var/lib/sshd
chown root:root /var/lib/sshd

5.4 启动服务并验证

# 检查配置文件语法
/usr/sbin/sshd -t  # 无输出则配置正确

# 重启 sshd 服务
systemctl daemon-reload
systemctl restart sshd

# 验证服务状态
systemctl status sshd  # 应显示 "active (running)"

# 验证版本
ssh -V  # 应显示 "OpenSSH_9.9p2"
sshd -V  # 应显示 "OpenSSH_9.9p2"

# 测试连接
ssh localhost  # 能正常登录即完成升级

5.5 回滚方案(若升级失败)

# 恢复配置文件
cp -r /opt/openssh_backup/etc_ssh/* /etc/ssh/

# 恢复二进制文件
cp /opt/openssh_backup/bin/ssh /usr/bin/
cp /opt/openssh_backup/bin/scp /usr/bin/
cp /opt/openssh_backup/bin/sftp /usr/bin/
cp /opt/openssh_backup/bin/sshd /usr/sbin/

# 重启服务
systemctl restart sshd

六、总结

通过以上步骤,我们可以在离线环境下成功将 OpenSSL 和 OpenSSH 升级到最新版本 9.9p2。同时,为了应对可能出现的升级失败情况,我们还提供了回滚方案,确保系统的稳定性和可用性。

希望本文对你有所帮助,如果你在升级过程中遇到任何问题,欢迎在评论区留言讨论。

注意:实际操作中,请根据你的系统环境和需求进行适当调整。

### 如何在 SUSE Linux Enterprise Server (SLES) 12离线安装或升级OpenSSH 版本 9.9p2 要在 SUSE Linux Enterprise Server (SLES) 12离线安装或升级OpenSSH 版本 9.9p2,可以按照以下方法操作: #### 准备工作 确保已经准备好所需的软件包文件 `openssh-9.9p2.tar.gz` 和依赖项(如 OpenSSL 库),并将这些文件复制到目标系统的 `/software/` 或其他指定目录下。 --- #### 升级步骤 ##### 1. 解压源码包 进入存储位置并解压缩 OpenSSH 源代码包: ```bash cd /software/ tar -zxf openssh-9.9p2.tar.gz ``` ##### 2. 编译配置 切换至解压后的目录,并运行编译前的配置脚本。假设系统中已存在自定义安装的 OpenSSL 路径 `/usr/local/openssl`,则可以通过如下命令完成配置: ```bash cd openssh-9.9p2/ ./configure --prefix=/usr/local/openssh \ --sysconfdir=/etc/ssh \ --with-ssl-dir=/usr/local/openssl \ --with-zlib ``` 上述命令指定了安装路径以及 SSL 和 zlib 的依赖库路径[^2]。 ##### 3. 构建安装 构建项目并进行多核加速编译(例如 `-j 4` 表示使用四个 CPU 核心): ```bash make -j 4 make install ``` 这一步会将新版本的 OpenSSH 安装到之前指定的目标路径 `/usr/local/openssh` 下。 ##### 4. 替换默认 SSH 文件 为了使新的 OpenSSH 成为系统默认使用的版本,需重新链接二进制文件和配置文件: ```bash mv /usr/sbin/sshd /usr/sbin/sshd.old ln -s /usr/local/openssh/sbin/sshd /usr/sbin/sshd cp /usr/local/openssh/etc/ssh_config /etc/ssh/ssh_config.new cp /usr/local/openssh/etc/sshd_config /etc/ssh/sshd_config.new ``` 注意备份旧版配置以防出现问题[^3]。 ##### 5. 更新服务启动器 修改 systemd 中的服务单元文件以指向新版可执行程序的位置: ```bash sed -i 's#/usr/sbin/sshd#/usr/local/openssh/sbin/sshd#' /usr/lib/systemd/system/sshd.service systemctl daemon-reload ``` 重启 SSHD 服务验证更改是否生效: ```bash systemctl restart sshd.service ``` ##### 6. 验证版本号 通过以下方式确认当前正在运行的是最新版本OpenSSH: ```bash /usr/local/openssh/bin/ssh -V ``` 如果显示的结果包含 “OpenSSH_9.9p2”,说明升级成功。 --- #### 注意事项 - 如果遇到权限不足的情况,请尝试加上 `sudo` 命令来获取超级用户权限。 - 确保所替换的新组件不会破坏现有网络连接功能,在测试阶段建议保留原生版本作为回退选项。 - 对于生产环境中的服务器而言,务必先在一个隔离环境中充分测试后再推广部署。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值