乐于分享
好东西不私藏

告别编译源码!一键完成openssh升级到OpenSSH 10.5

告别编译源码!一键完成openssh升级到OpenSSH 10.5

一、简单说:等保要求,LINUX无高风险,而SSH是我们几乎必须开放的!!!!!

如果你要用源码来编译安装我不拦着你,我以前尝试过手动来搞,但是出问题的概率太大,编译起来要求大多。尤其是新版本openssh9.4之后只能用新的openssl来一起编译。

有了RPM包,你可以用运维工具直接推下去多好。

Supported (tested) :

Distro

Version

Recommanded EL RPMs

CentOS

5

EL   5

CentOS

6

EL   6

CentOS

7

EL   7

CentOS

8

EL   8

CentOS   Stream

8

EL   8

CentOS   Stream

9

EL   9

Rocky   Linux

8

EL   8

Rocky   Linux

9

EL   9

Amazon   Linux

1

EL   6

Amazon   Linux

2

EL   7

Amazon   Linux

2023

EL   9

UnionTech   UOS

V20

UOS20

openEuler

20.03

EL   8

openEuler

22.03

EL   8

openEuler

24.03

EL   9

AnolisOS

7

EL   7

AnolisOS

8

EL   8

AnolisOS

2023

EL   9

编译工具

openssh-rpms-10包含以下文件

1compile.sh:编译脚本,执行生成RPM包用的,特殊说明了下,要是5版本的系统需要./compile.sh el5

2、其中downloads里放的源码包x11-ssh-askpass-1.2.4.1.tar.gz

3el5/el6/el7/asmzn1/smzn2/smzn2023对应要编译的系统版本

4RPMS里是存储编译好的RPM

5sshd.pam.el7 就是对应操作系统里的/etc/pam.d里的模板文件原始版本

6openssh.spec。编译好的rpm包放在EL7/RPMS目录下,有能力的小伙伴可以在这里修改相关的参数。

7pullsrc.shopenssh相关源码文件下载脚本,如果没有网的话,也可以手动下载源码包,不使用这个脚本

8version.env:定义了opensshopenssl源码的版本信息

至此,工具基本介绍完毕。

二、准备编译环境

准备编译环境,配置好yum源,安装如下安装包

yum groupinstall -y "Development Tools"

yum install -y imake rpm-build pam-devel krb5-devel zlib-devel libXt-devel libX11-devel gtk2-devel gcc44 perl perl-CPAN

准备好源码安装包,我这里手动下载了放到里面downloads目录里

三、修改配置文件

修改版本信息

编辑openssh-rpms-10.3p1_b6/version.env文件,更新OpenSSHOpenSSL到实际需要的版本。本文演示为openssh10.5p1openssl-4.0.1版本

开始编译生成安装包

执行源码打包脚本

./compile.sh开始编译

编译的时间有点长,耐心等待。。。

看到以下界面说明已经编译成功了。

编译生成了三个RPM

四、RPM包安装

1、 Backup current SSH config

# 备份当前SSH config

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

2、新建ssh连接窗口,以免当前ssh连接窗口重启sshd后登录不了

3RPM包安装

yum localinstall openssh*.rpm

rpm -ivh --force --nodeps --replacepkgs --replacefiles openssh-*.rpm

两种方法都可以

安装完成执行:

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

4、验证sshd_config配置

无输出,说明配置文件没有问题

5、重启sshd服务

systemctl restart sshd

6、验证openssh版本

至此,openssh升级完成。

特别提醒:

重要提醒:务必先在测试环境完整验证升级流程,再上生产执行,防止 ssh 无法登录导致服务器失联。