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

相关推荐
TonyLee0171 小时前
Claude Code + DeepSeek:服务器安装与使用笔记
linux·服务器·deepseek·claude code
buhuizhiyuci1 小时前
【Linux 篇】数字世界的水流蓄水池 —— IO 缓冲区机制深度实战解析
linux·运维·服务器·c++
骇客野人1 小时前
Linux 服务器 Python 版 MCP 服务部署整体方案(适配 Claude/Cursor/自研Agent)
linux·服务器·python
天疆说2 小时前
04 稳定性与性能调优实录:OOM 崩溃、并发槽位、前缀缓存与 DSpark 调参
linux·运维·缓存
星卯教育tony2 小时前
NOI Linux 2.0 服务器多用户网页桌面部署方案(腾讯云轻量Ubuntu20.04专属版 CSP复赛比赛环境搭建免安装虚拟机 )
linux·服务器·腾讯云
Forever Nore3 小时前
LeetCode 14 最长公共前缀 - 纵向扫描
linux·服务器·leetcode
拂拉氏3 小时前
【知识讲解】 Linux权限相关知识讲解
linux·权限
Shadow(⊙o⊙)3 小时前
Linux网络部分——TCP协议服务端客户端交互接口,入门级硬核解析1.0
linux·网络·tcp/ip
桑榆4167 小时前
双系统(Windows + Ubuntu)安装流程
linux·windows·ubuntu
ltl14 小时前
实时 OS 巡礼:VxWorks、QNX、Zephyr 与 PREEMPT_RT
linux