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包,并确保所有依赖版本兼容。

相关推荐
无奈笑天下23 分钟前
银河麒麟V10虚拟机安装vmtools报错:/bin/bash解释器错误, 权限不够
linux·运维·服务器·开发语言·经验分享·bash
wdfk_prog1 小时前
[Linux]学习笔记系列 -- [fs]kernfs
linux·笔记·学习
代码游侠1 小时前
学习笔记——IO多路复用技术
linux·运维·数据库·笔记·网络协议·学习
比奇堡派星星1 小时前
Linux Hotplug 机制详解
linux·开发语言·驱动开发
m0_485614672 小时前
Linux-容器基础2
linux·运维·服务器
QT 小鲜肉2 小时前
【Linux命令大全】001.文件管理之mattrib命令(实操篇)
linux·运维·服务器·chrome·笔记
鸠摩智首席音效师2 小时前
如何在 Linux 上自动清理 Journalctl 日志 ?
linux·运维·服务器
鸠摩智首席音效师3 小时前
如何在 Linux 下以 www-data 用户运行 Crontab ?
linux·运维·服务器
wdfk_prog3 小时前
[Linux]学习笔记系列 -- [fs]inode
linux·笔记·学习
iCxhust3 小时前
linux /etc 目录 etc是什么缩写
linux·运维·服务器·php