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

相关推荐
HLC++10 小时前
Linux的进程间通信
android·linux·服务器
华清远见IT开放实验室11 小时前
实验室建设案例 | 石家庄科技信息职业学院嵌入式实验室——从底层硬件到系统应用,一所应用型高校的嵌入式人才培养这样落地
linux·arm开发·stm32·嵌入式硬件·高校·实验室建设
groundhappy14 小时前
idalib安装和codex ida-mcp配置
linux·开发语言·python
通信小小昕15 小时前
Ubuntu 26.04 中文输入法安装
linux·运维·ubuntu
张小姐的猫16 小时前
【Linux】网络编程 —— HTTP协议(上)
linux·运维·服务器·网络·http·单例模式·策略模式
栩栩云生16 小时前
AI 写代码犯的错,早被写进了错题集
linux·安全·ai编程
imc.1117 小时前
linux基础IO
linux·运维·服务器
BelongPanda19 小时前
Linux Nginx 纯手动 Let‘s Encrypt 泛域名证书配置教程
linux·nginx
酷可达拉斯19 小时前
Linux操作系统-shell编程(0)
linux·运维·服务器·python·云计算
2301_7779983420 小时前
Linux中断机制:操作系统如何高效运行
linux·运维·服务器