almalinux8 编译openssh 9.1p1生成rpm包并验证安装

本文档详细介绍了如何在AlmaLinux 8环境中,从源码编译OpenSSH 9.1p1,并生成RPM包进行安装。内容包括编译环境准备、源码下载、编译过程、安装验证以及清理步骤。旨在解决官方及第三方库中缺少最新OpenSSH版本的问题,适用于需要更新OpenSSH以修复安全漏洞的生产环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

前言

背景

编译环境

最终结果

解释

创建编译目录

制作准备

安装必要的包

备份关键文件,以便编译出错恢复

下载源码包到指定位置

解压tar包文件到指定目录

修改openssh.spec,修改好的文件配置文档在末尾

输入半角 :,然后输入 set nu,回车

编译openssh的rpm包

编译后处理 

删除不必要的debug文件

安装配置

验证安装当前最新的rpm

重启 sshd 服务并设置开机自启

后记:

RPM下载链接

联系方式

openssh.spec配置文件,可以直接复制使用。


前言

背景

近期公司系统检测出漏洞,需要进行更新,almaLinux官方最新的是8.0。想着同架构的Fedora更新较快,结果就算是Fedora也最高是8.9。可是被检测出有漏洞的版本刚好就是到8.9。各大三方rpm构建网站都没有找到最新的openssh最新的。只好自己构建一份,用于生产环境的快速更新。

  1. 文中代码全部可以直接复制使用,部分运行结果请注意不要复制。
  2. 在生产环境更新时强烈建议开启备用连接方式。(telnet、VNC、带外管理)

编译环境

#计算机架构:x86_64 PC
#编译环境:AlmaLinux release 8.5 (Arctic Sphynx)
#网络环境:联网
#内核:5.4.188

uname -a

Linux 5.4.188-1.el8.elrepo.x86_64 #1 SMP Mon Mar 28 09:09:25 EDT 2022 x86_64 x86_64 x86_64 GNU/Linux

最终结果

openssh-9.1p1-1.el8.x86_64
openssh-askpass-9.1p1-1.el8.x86_64                 
openssh-clients-9.1p1-1.el8.x86_64  
openssh-server-9.1p1-1.el8.x86_64

解释

BUILD,存放源代码解压以后的文件,自己无需操作,只需要提供build目录
RPMS,存放制作完成的RPM包,此目录下会有子目录
SOURCES,存放收集的原材料和配置文件,源码包,补丁包
SPECS,存放spec文件,每个rpm包的制作,都必须要有一个spec文件,用来指导文件。此文件以软件包的名字命名,以spec为扩展名
SRPMS,src格式的rpm包的存放位置。无平台相关的概念

创建编译目录

mkdir -pv /root/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}

制作准备

安装必要的包

yum install rpm-build  rpm-devel rpmdevtools \

gcc gcc-c++ glibc glibc-devel \

openssl-devel openssl zlib zlib-devel lrzsz \

make wget krb5-devel pam-devel libX11-devel xmkmf \

libXt-devel initscripts imake perl-devel gtk2-devel unzip 

备份关键文件,以便编译出错恢复

cp /etc/pam.d/sshd /etc/pam.d/sshd-bak

cp -p /etc/pam.d/system-auth /etc/pam.d/system-auth-bak

cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config-bak

cp -p /etc/ssh/ssh_config /etc/ssh/ssh_config-bak

下载源码包到指定位置

cd /root/rpmbuild/SOURCES/


curl -O https://src.fedoraproject.org/repo/pkgs/openssh/\

x11-ssh-askpass-1.2.4.1.tar.gz/8f2e41f3f7eaa8543a2440454637f3c3/\

x11-ssh-askpass-1.2.4.1.tar.gz


curl -O https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/\

portable/openssh-9.1p1.tar.gz

解压tar包文件到指定目录

tar zxvf openssh-9.1p1.tar.gz -C /root/rpmbuild/SPECS/

cd /root/rpmbuild/SPECS/openssh-9.1p1/contrib/redhat/

修改openssh.spec,修改好的文件配置文档在末尾

vim /root/rpmbuild/SPECS/openssh-9.1p1/contrib/redhat/openssh.spec

输入半角 :,然后输入 set nu回车

#第 11-15 行: 是否生成 x11-askpass、gnome-askpass 两个 RPM 包。可以不选,不选的话就不要 x11-ssh-askpass-1.2.4.1.tar.gz 包;默认生成,建议选上
# Do we want to disable building of x11-askpass? (1=yes 0=no)     
%global no_x11_askpass 0                                          
                                                                  
# Do we want to disable building of gnome-askpass? (1=yes 0=no)   
%global no_gnome_askpass 0  

#第 89 行: 添加一个源

Source2: sshd

#第 104 行:注释该行,检测 openssl 版本,almalinux初始版本就是已经大于1.1了,不注释构建时会出现报错

#BuildRequires: openssl-devel < 1.1

#第 280 行:更改为从SOURCE目录复制 sshd 到 /etc/pam.d/sshd,具体原因上面有解释注释掉原命令,改为下面这行

#install -m644 contrib/redhat/sshd.pam     $RPM_BUILD_ROOT/etc/pam.d/sshd
install -m644 $RPM_SOURCE_DIR/sshd $RPM_BUILD_ROOT/etc/pam.d/sshd   

#第 340-341 行 这两行需要放在  %pre server 下,为安装前备份内容

cp -r /etc/ssh /etc/ssh_bak                     
  

#第 344 -353行:  需要放在 %post server后面,表示安装后需要执行的命令
#    1.允许root登录;升级为9.1后默认为不允许root登录;
#    2.允许使用PAM登录认证;
#    3.允许使用X11Forwarding图形转发模块;
#    4.增加认证支持(默认openssh 9.1,默认不支持部分低版本的认证模式),不添加会造成低版本的连接器如:CRT等,客户端连接失败
#    5.给/etc/init.d/sshd 执行权限;
#    6.三个文件 ssh_host_rsa_key、ssh_host_ecdsa_key、ssh_host_ed25519_key 为你要文件,9.1版本缩小了权限,只允许root查看,否者启动sshd服务会报错

sed -i -e "s/#PermitRootLogin prohibit-password/PermitRootLogin yes/g" /etc/ssh/sshd_config
sed -i -e "s/#UsePAM no/UsePAM yes/g" /etc/ssh/sshd_config
sed -i -e "s/#X11Forwarding no/X11Forwarding yes/g" /etc/ssh/sshd_config
echo "KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group14-sha1" >>/etc/ssh/sshd_config
chmod +x /etc/init.d/sshd
chmod 600 /etc/ssh/ssh_host_rsa_key
chmod 600 /etc/ssh/ssh_host_ecdsa_key
chmod 600 /etc/ssh/ssh_host_ed25519_key

编译openssh的rpm包

cp /etc/pam.d/sshd /root/rpmbuild/SOURCES/
rpmbuild -bb /root/rpmbuild/SPECS/openssh-9.1p1/contrib/redhat/openssh.spec

构建完成后会显示 + exit 0 ,表示无报错构建成功了

+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd openssh-9.1p1
+ rm -rf /root/rpmbuild/BUILDROOT/openssh-9.1p1-1.el8.x86_64
+ exit 0

编译后处理 

删除不必要的debug文件

cd /root/rpmbuild/RPMS/x86_64/

ls -l
total 6120
-rw-r--r--. 1 root root  682712 Nov 10 00:38 openssh-9.1p1-1.el8.x86_64.rpm
-rw-r--r--. 1 root root   50136 Nov 10 00:38 openssh-askpass-9.1p1-1.el8.x86_64.rpm
-rw-r--r--. 1 root root   61056 Nov 10 00:38 openssh-askpass-debuginfo-9.1p1-1.el8.x86_64.rpm
-rw-r--r--. 1 root root   31040 Nov 10 00:38 openssh-askpass-gnome-9.1p1-1.el8.x86_64.rpm
-rw-r--r--. 1 root root   42568 Nov 10 00:38 openssh-askpass-gnome-debuginfo-9.1p1-1.el8.x86_64.rpm
-rw-r--r--. 1 root root  713300 Nov 10 00:38 openssh-clients-9.1p1-1.el8.x86_64.rpm
-rw-r--r--. 1 root root 1429932 Nov 10 00:38 openssh-clients-debuginfo-9.1p1-1.el8.x86_64.rpm
-rw-r--r--. 1 root root 1102088 Nov 10 00:38 openssh-debuginfo-9.1p1-1.el8.x86_64.rpm
-rw-r--r--. 1 root root  723116 Nov 10 00:38 openssh-debugsource-9.1p1-1.el8.x86_64.rpm
-rw-r--r--. 1 root root  490724 Nov 10 00:38 openssh-server-9.1p1-1.el8.x86_64.rpm
-rw-r--r--. 1 root root  917100 Nov 10 00:38 openssh-server-debuginfo-9.1p1-1.el8.x86_64.rpm

rm -f *debug*

安装配置

验证安装当前最新的rpm

dnf install ./*.rpm


******
Upgraded:
  openssh-9.1p1-1.el8.x86_64                          openssh-askpass-9.1p1-1.el8.x86_64                 
  openssh-clients-9.1p1-1.el8.x86_64                  openssh-server-9.1p1-1.el8.x86_64                  
Installed:
  openssh-askpass-gnome-9.1p1-1.el8.x86_64                                                               
Complete!

重启 sshd 服务并设置开机自启

systemctl restart sshd && systemctl enable sshd

sshd.service is not a native service, redirecting to systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable sshd

后记:

RPM下载链接

编译好的RPM下载链接

联系方式

如果有问题可以邮件联系作者 点击链接发邮件

openssh.spec配置文件,可以直接复制使用。


                
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值