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
三、编译打包与执行
(3.1)编译生成文件包
./compile.sh
执行完后看有没有报错,同时检查一下 echo $?
生成的包如下,在这个目录 /opt/openssh-rpms-main/el7/RPMS/x86_64/
(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
至此成功:
报错排查
(1)编译报错 use IPC::Cmd;
参考:https://zhuanlan.zhihu.com/p/4889990288