centos7离线升级openssh

在CentOS 7上进行离线升级OpenSSH,需通过本地YUM源或手动编译安装实现,以下是详细步骤及注意事项:

一、准备工作

  1. 确认当前版本

    复制代码
    `cat /etc/redhat-release  # 查看CentOS版本(如7.9)
    ssh -V                   # 查看OpenSSH版本(如7.4p1)`
  2. 下载依赖包和OpenSSH源码

    • 依赖包 :需下载以下RPM包(版本需匹配系统架构):
      • openssl-develpam-develzlib-develgccmakeselinux-policy-devel(如需SELinux支持)。
    • OpenSSH源码 :从官网或可信源下载最新版本(如OpenSSH官网),或使用预编译的RPM包(如GitHub上的boypt/openssh-rpm)。
  3. 配置本地YUM源(可选)

    若使用ISO镜像作为本地源:

    复制代码
    `mkdir /mnt/centos-iso
    mount -o loop CentOS-7-x86_64-DVD-2009.iso /mnt/centos-iso  # 挂载ISO
    echo "[local]
    name=Local Repository
    baseurl=file:///mnt/centos-iso
    enabled=1
    gpgcheck=0" > /etc/yum.repos.d/local.repo
    yum clean all && yum makecache`

二、离线升级步骤

方法1:使用预编译RPM包(推荐)
  1. 传输RPM包到服务器

    将下载的OpenSSH RPM包(如openssh-9.8p1-1.el7.x86_64.rpm)及依赖包上传至服务器。

  2. 安装RPM包

    复制代码
    `rpm -Uvh openssh-*.rpm  # 升级所有相关包`
  3. 验证安装

    复制代码
    `ssh -V  # 应显示新版本(如OpenSSH_9.8p1)`
方法2:手动编译安装
  1. 安装依赖

    若使用本地YUM源:

    复制代码
    `yum install -y gcc pam-devel zlib-devel openssl-devel selinux-policy-devel`

    若完全离线,需手动安装依赖RPM包(同步骤1中的依赖包)。

  2. 编译安装OpenSSH

    复制代码
    `tar -xzf openssh-9.8p1.tar.gz
    cd openssh-9.8p1
    ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-selinux --with-md5-passwords
    make && make install`
  3. 更新服务配置

    • 备份旧配置:

      复制代码
      `cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak`
    • 启用新服务:

      复制代码
      `cp contrib/redhat/sshd.init /etc/init.d/sshd
      chmod +x /etc/init.d/sshd
      chkconfig --add sshd && chkconfig sshd on`
  4. 重启服务

    复制代码
    `systemctl restart sshd`

三、关键注意事项

  1. 避免SSH中断

    • 升级前启动Telnet或VNC备用连接,防止SSH服务重启后无法访问。
    • 若仅能通过SSH连接,建议使用screentmux保持会话,或通过控制台直接操作。
  2. 权限与密钥安全

    • 确保/etc/ssh/目录下密钥文件权限为600

      复制代码
      `chmod 600 /etc/ssh/ssh_host_*_key`
    • 检查/etc/pam.d/sshd文件是否存在,避免密码认证失败。

  3. 防火墙与SELinux

    • 若启用防火墙,需放行SSH端口(默认22):

      复制代码
      `irewall-cmd --permanent --add-port=22/tcp
      firewall-cmd --reload`
    • 若SELinux启用,确保上下文正确:

      复制代码
      `restorecon -Rv /etc/ssh`
  4. 回滚方案

    • 保留旧版RPM包或备份/etc/ssh/目录,以便降级时恢复。

四、验证升级结果

复制代码
`ssh -V  # 确认版本更新
systemctl status sshd  # 检查服务状态
ssh localhost -v  # 测试连接`

五、清理工作

  1. 卸载旧版OpenSSH(若通过RPM安装):

    复制代码
    ``rpm -e `rpm -qa | grep openssh` --nodeps``
  2. 删除临时文件:

    复制代码
    `rm -rf /tmp/openssh-* /etc/ssh/sshd_config.bak`

通过以上步骤,可安全完成CentOS 7的OpenSSH离线升级。若遇到依赖冲突或编译错误,建议优先使用预编译RPM包,并确保所有依赖版本兼容。

相关推荐
2401_834636992 小时前
Linux 负载均衡全实战:Nginx+HAProxy+LVS 从原理到落地
linux·nginx·负载均衡
鹏大师运维7 小时前
为什么信创电脑装软件总提示“软件包架构不匹配”?
linux·运维·架构·国产化·麒麟·deb·统信uos
鹤落晴春9 小时前
【Linux复习】管理SELinux安全性
linux·运维·服务器
yz_aiks9 小时前
Linux Jar包配置Systemd自启动实战:从排查到配置全流程
linux·python·jar·自启动·systemd
bjzhang7511 小时前
CentOS下安装MySQL详解
linux·mysql·centos
Jason_chen12 小时前
Linux 6.2 音频机制深度解析:AI驱动的低延迟音频与零信任音频安全架构
linux
下午写HelloWorld12 小时前
Linux系统及Ubuntu常用指令
linux·ubuntu·操作系统
weixin_5231853214 小时前
Collections.unmodifiableMap详解:真的不可修改吗?
java·linux·前端
凡人叶枫15 小时前
Effective C++ 条款04:确定对象被使用前已先被初始化
java·linux·开发语言·c++·嵌入式开发
云栖梦泽15 小时前
玩转RK3506SDK
linux·嵌入式硬件