OpenSSH升级编译RPM包

前言

OpenSSH 是一个免费的 SSH 连接工具,广泛用于安全的远程登录和文件传输。本项目提供了RPM包的形式对OpenSSH进行升级

编译RPM包

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

OpenSSH 源码:https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/
OpenSSL 源码:https://openssl-library.org/source/old/3.3/index.html

安装依赖环境

1
2
yum groupinstall -y "Development Tools"
yum install -y imake rpm-build pam-devel krb5-devel zlib-devel libXt-devel libX11-devel gtk2-devel perl-IPC-Cmd

配置编译参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 $ tar -xf openssh-rpms.tar.gz 

$ cat openssh-rpms/version.env #配置需要编译的openssh版本
OPENSSLSRC=openssl-3.0.14.tar.gz
OPENSSHSRC=openssh-9.9p2.tar.gz
ASKPASSSRC=x11-ssh-askpass-1.2.4.1.tar.gz
PERLSRC=perl-5.38.2.tar.gz
PKGREL=1

OPENSSHVER=${OPENSSHSRC%%.tar.gz}
OPENSSHVER=${OPENSSHVER##openssh-}
OPENSSLVER=${OPENSSLSRC%%.tar.gz}
OPENSSLVER=${OPENSSLVER##openssl-}
PERLVER=${PERLSRC%%.tar.gz}
PERLVER=${PERLVER##perl-}

#对应的源码包
$ ls openssh-rpms/downloads/
openssh-9.9p2.tar.gz openssl-3.0.14.tar.gz x11-ssh-askpass-1.2.4.1.tar.gz

编译安装生成RPM包

1
2
3
$ cd openssh-rpms
$ ./pullsrc.sh #根据version变量检查对应的包
$ ./compile.sh #开始编译制作

查看RPM包

1
2
3
4
5
6
7
8
9
$ ls openssh-rpms/el7/RPMS/aarch64/ -l
total 20932
-rw-r--r-- 1 root root 6012540 Apr 8 12:30 openssh-9.9p2-1.oe1.bclinux.aarch64.rpm
-rw-r--r-- 1 root root 6217344 Apr 8 12:30 openssh-clients-9.9p2-1.oe1.bclinux.aarch64.rpm
-rw-r--r-- 1 root root 5022528 Apr 8 12:30 openssh-debuginfo-9.9p2-1.oe1.bclinux.aarch64.rpm
-rw-r--r-- 1 root root 880308 Apr 8 12:30 openssh-debugsource-9.9p2-1.oe1.bclinux.aarch64.rpm
-rw-r--r-- 1 root root 3294400 Apr 8 12:30 openssh-server-9.9p2-1.oe1.bclinux.aarch64.rpm

#说明:当前是基于ARM环境需要来进行制作RPM包

Linux主机升级OpenSSH

升级前准备

备份相关文件

1
2
3
4
cp -rf /etc/ssh /etc/ssh.bak
cp -rf /usr/bin/openssl /usr/bin/openssl.bak
cp -rf /etc/pam.d /etc/pam.d.bak
cp /run/systemd/generator.late/sshd.service ./sshd.service.bak

安装和配置telnet服务

1
2
3
4
# 如果没有yum源,可以准备对应的rpm包
yum install -y telnet telnet-server xinetd
systemctl start xinetd && systemctl start telnet.socket
systemctl enable telnet.socket

测试telnet

1
2
3
4
5
6
7
8
9
# 必须测试成功才可以进行后续
$ telnet 172.22.15.12
Trying 172.22.15.12...
Connected to 172.22.15.12.
Escape character is '^]'.
Kernel 4.19.90-2107.6.0.0208.16.oe1.bclinux.x86_64 on an x86_64
xxgjt-itc-pm-12 login: root
Password:
Last login: Fri Jul 5 11:16:37 from 172.22.20.60

安装RPM包

1
2
3
4
#当前环境安装新版本,旧版本的help包影响,强制卸载,其它不动
$ rpm -e openssh-help-8.2p1-15.oe1.noarch --nodeps

$ rpm -Uvh *.rpm --nodeps

检查新版本

1
2
3
4
5
6
7
8
 $ ssh -V
OpenSSH_9.9p2, OpenSSL 3.0.14 4 Jun 2024

$ sshd -V

OpenSSH_9.9p2, OpenSSL 3.0.14 4 Jun 2024
$ sshd -t


OpenSSH升级编译RPM包
http://example.com/2025/04/08/OpenSSH升级编译RPM包/
作者
种田人
发布于
2025年4月8日
许可协议