linux升级openssh版本

本文是编译openssh包,然后yum localinstall 安装,或 rpm安装

影响:不影响业务运行、不影响现有ssh连接

一、准备工作

(1.1)yum源与前置依赖工具

cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo -O /etc/yum.repos.d/CentOS-Base.repo
yum clean all
yum makecache
yum update

-- 准备工作依赖包与工具
yum groupinstall -y "Development Tools"
yum install -y imake rpm-build pam-devel krb5-devel zlib-devel libXt-devel libX11-devel gtk2-devel

(1.2)telnet 服务端安装

同上,为了避免 ssh 重启后无法远程登录

yum install telnet

记得防火墙

二、下载编译打包的shell脚本包并解压

(2.1)下载与解压

GitHub地址:https://github.com/boypt/openssh-rpms

wget https://github.com/boypt/openssh-rpms/archive/refs/heads/main.zip

解压

unzip main.zip -d /opt
cd /opt/openssh-rpms-main/

代码结构

  compile.sh:编译脚本

  el5、el6、el7:对应CentOS5、6、7三个系统,编译相关的参数由SPECS目录下的openssh.spec控制;编译好的rpm包放在RPMS目录下

  pullsrc.sh:openssh相关源码下载脚本

  version.env:定义了openssh及openssl源码的版本信息

(2.2)修改pullsrc.sh脚本参数

脚本23行修改为:source ./version.env  

  检查脚本中wget 是否有忽略 SSL 证书验证,选项为:--no-check-certificate (示例:wget --no-check-certificate $OPENSSLMIR/$OPENSSLSRC)

新版本一般不用修改,默认已添加

  检查openssh源码中有没有ssh-copy-id

vim /opt/openssh-rpms-main/el7/SPECS/openssh.spec

  搜索相关ssh-copy-id 参数,能搜到即有,新版本默认都有

(2.3)拉取源码包,修改version.env,将变量中的版本修改为要升级的版本

有外网直接执行即可,通过脚本方式下载:./pullsrc.sh

自行下载:下载升级的版本包放到 downloads 目录下
openssh 源码包下载地址:http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/
openssl 源码包下载地址:https://www.openssl.org/source/
perl 源码包下载地址: https://www.perl.org/get.html

image

 三、编译打包与执行

(3.1)编译生成文件包

./compile.sh

 

执行完后看有没有报错,同时检查一下  echo $?

生成的包如下,在这个目录  /opt/openssh-rpms-main/el7/RPMS/x86_64/

image

 (3.2)执行

--  备份
# Go go the generated RPMS directory.
cd $(./compile.sh RPMDIR)
pwd
ls

# Backup current SSH config
[[ -f /etc/ssh/sshd_config ]] && mv /etc/ssh/sshd_config /etc/ssh/sshd_config.$(date +%Y%m%d)

chmod -v 600 /etc/ssh/ssh_host_*_key


if [[ -d /run/systemd/system && -f /usr/lib/systemd/system/sshd.service ]]; then
    mv /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sshd.service.$(date +%Y%m%d)
    systemctl daemon-reload
fi



-- 执行
cd /opt/openssh-rpms-main/el7/RPMS/x86_64/
yum localinstall ./*
ssh -V && /usr/sbin/sshd -V
-- 检查

检查 /etc/ssh/sshd_config 配置文件,不允许root登录,解决方法:
vim /etc/ssh/sshd_config 
PermitRootLogin yes  ## 打开这行注释,保存退出重启sshd服务即可 
-- 重启,SSH验证
# Restart service
systemctl restart sshd 

至此成功:

img_v3_02pk_ae4a01d7-7f6f-4792-b4e2-8e52ca466d9m

 

报错排查

(1)编译报错 use IPC::Cmd;

参考:https://zhuanlan.zhihu.com/p/4889990288

参考链接:

posted @ 2025-08-29 18:15  郭大侠1  阅读(131)  评论(0)    收藏  举报