centos7离线升级openssh

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

一、准备工作

  1. 确认当前版本

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

    • 依赖包 :需下载以下RPM包(版本需匹配系统架构):
      • openssl-devel、pam-devel、zlib-devel、gcc、make、selinux-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连接,建议使用screen或tmux保持会话,或通过控制台直接操作。
  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包,并确保所有依赖版本兼容。

相关推荐
贵州诚鑫致达科技有限公司10 小时前
Linux的yum源怎么重启?源不是服务
linux·运维·服务器
澜山奕秋13 小时前
RHCSA
linux·运维·服务器
Web极客码14 小时前
告别流式截断:我用客户端中间件解决长文本 API 跨国 SSE 断连与数据自愈
linux·agent 图
cnnews14 小时前
Chromebox3安装Ubuntu后内存化与最小化 eMMC 写入优化
linux·运维·ubuntu
flytalei15 小时前
Ubuntu 24.04 单节点 K3s 部署实践:从环境评估到故障排查与验收
linux·运维·ubuntu
Starry-sky(jing)15 小时前
Hermes Agent 部署后怎么升级?v0.21.7 Linux 源代码版实测
linux·人工智能·ai agent·版本升级·hermes agent
水饺编程15 小时前
第2章:Linux 基础,clear 命令
linux·c语言·汇编
GeW16 小时前
新质生产力路线图Linux和数据库自主可控实践指南
linux
yunwei3716 小时前
eBPF 教程:BPF 迭代器用于内核数据导出
linux·后端·性能优化
别动我齐刘海17 小时前
实时控制学习2
linux·c++·人工智能·学习·算法