linux系统RPM方式编译升级openssh
遵义市妇幼保健院李明
在医院运维时经常会出现linux服务器openssl及openssh组件存在高危漏洞,但官方库无法更新到最新或者指定的版本,例如Anolis OS8官方库ssh最新只到8.0p1,而要求要9.2以上,常规编译安装的方式不适合批量更新。本文所使用的方法可以编译成rpm以到达快速更新的目的。本文使用龙蜥Anolis OS8.10系统,源码为目前最新的openssl-3.5.0和openssh-10.0p1。需要注意的是本方法编译的RPM包只更新sshd的ssl版本,不更新本机的ssl版本。
一、编译程序
1、下载编译工具
wget https://gitee.com/boforest/boforest/raw/master/OpenSSH/openssh-rpms-main.zip
unzip openssh-rpms-main.zip
cd openssh-rpms-main/
2、修改版本文件
vim version.env

3、将下载的源码包放到openssh-rpms-main的downloads目录,建议在官网进行下载。
openssl-3.5.0.tar.gz openssh-10.0p1.tar.gz x11-ssh-askpass-1.2.4.1.tar.gz

4、修改openssh.spec文件
vim el7/SPECS/openssh.spec
在install -d $RPM_BUILD_ROOT%{_libexecdir}/openssh后面增加install -m755 contrib/ssh-copy-id $RPM_BUILD_ROOT/usr/bin/ssh-copy-id(大概330行左右位置)

在 %attr(0755,root,root) %{_bindir}/ssh-keygen后添加%attr(0755,root,root) %{_bindir}/ssh-copy-id,并在endif前添加%{_libexecdir}/openssh/*(重要)

5、下载编译工具和依赖
yum groupinstall -y "Development Tools"
yum install -y make rpm-build pam-devel krb5-devel zlib-devel libXt-devel libX11-devel gtk2-devel perl
6、生成rpm包
./compile.sh
编译好的rpm包放在el7/RPMS目录下

二、安装编译好的程序后续大家可以将编译好的文件拷贝到需要更新的服务器,用yum的本地安装命令操作,最好是先卸载原有程序,笔者实际操作中直接覆盖安装也未发现问题。
1、升级OpenSSH
备份原有配置
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
cp /etc/pam.d/sshd /etc/pam.d/sshd.backup
cp /etc/pam.d/system-auth /etc/pam.d/system-auth.backup
安装并赋予文件权限
yum localinstall -y openssh-*.rpm
chmod 0600 /etc/ssh/ssh_host_rsa_key
chmod 0600 /etc/ssh/ssh_host_ecdsa_key
chmod 0600 /etc/ssh/ssh_host_ed25519_key
还原备份文件
\cp -f /etc/ssh/sshd_config.backup /etc/ssh/sshd_config
\cp -f /etc/pam.d/sshd.backup /etc/pam.d/sshd
\cp -f /etc/pam.d/system-auth.backup /etc/pam.d/system-auth
2、如未备份可以直接修改sshd_config文件,添加:
Port 22
AddressFamily any
ListenAddress 0.0.0.0
ListenAddress ::
PermitRootLogin yes
PasswordAuthentication yes
3、重启服务
systemctl restart sshd #重启服务
4、查看版本及测试连接

以下是我编译好的rpm包
链接:https://pan.quark.cn/s/c44e2f4b6915
提取码:gGxa

评论 (0)