ubuntu通过源码编译的方式升级openssh版本到9.9p2

确认源文件目录

文中所使用的源文件目录使用的是/data/software,到时候真实更新时所有/data/software开头的目录需要切换到自己的真实目录,并且文中所有解压源码操作默认是在/data/software目录下操作

下载安装包

COPY
1
2
3
4
cd /data/software
wget https://www.zlib.net/zlib-1.3.1.tar.gz
wget https://www.openssl.org/source/openssl-3.2.1.tar.gz
wget https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/openssh-9.9p2.tar.gz

备份旧版本以及相关配置

COPY
1
2
3
sudo cp -rf /etc/ssh /etc/ssh.old # 备份旧的ssh配置文件
sudo cp -rf /usr/bin/openssl /usr/bin/openssl.old # 备份旧版本openssl
sudo cp -rf /etc/pam.d /etc/pam.d.old # 备份旧的pam模块配置

安装zlib模块

COPY
1
2
3
4
tar -zxvf zlib-1.3.1.tar.gz # 解压zlib模块源码
cd zlib-1.3.1/
./configure --prefix=/data/software/zlib # 配置编译 以及安装目录
make && make install # 编译安装

安装openssl

COPY
1
2
3
4
5
6
7
8
tar -zxvf openssl-3.2.1.tar.gz # 解压openssl
cd openssl-3.2.1/
./config --prefix=/data/software/openssl # 配置编译 以及安装目录
make -j && make install # 编译安装,这里编译时间比较长,建议根据自己服务器实际配置设置编译并行的任务数
sudo mv /usr/bin/openssl /usr/bin/openssl.old # 备份并删除旧版的openssl
sudo ln -s /data/software/openssl/bin/openssl /usr/bin/openssl #创建新版本的链接
sudo ln -s /data/software/openssl/lib64/libssl.so.3 /usr/lib/libssl.so.3 # 如果系统有/usr/lib64需要放这个目录下
sudo ln -s /data/software/openssl/lib64/libcrypto.so.3 /usr/lib/libcrypto.so.3 # 如果系统有/usr/lib64需要放这个目录下

安装openssh

COPY
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
tar -zxvf openssh-9.9p2.tar.gz #解压openssh
cd openssh-9.9p2/
./configure --prefix=/data/software/openssh --with-zlib=/data/software/zlib --with-ssl-dir=/data/software/openssl --with-pam --sysconfdir=/etc/ssh --mandir=/usr/share/man # 配置编译 以及安装目录
sudo rm -rf /etc/ssh # 删除旧版配置文件,前面已经备份过了
make && make install #编译安装
sudo mv /usr/bin/ssh /usr/bin/ssh.old # 备份旧版
sudo mv /usr/sbin/sshd /usr/sbin/sshd.old # 备份旧版
sudo vi /etc/ssh/sshd_config # 根据实际情况配置调整配置文件,如果需要root登录,一定要配置PermitRootLogin yes
sudo ln -s /data/software/openssh/bin/ssh /usr/bin/ssh # 创建符号链接
sudo ln -s /data/software/openssh/sbin/sshd /usr/sbin/sshd # 创建符号链接
# 重载配置并启用服务
sudo systemctl daemon-reload
sudo systemctl enable sshd # 这里可能会抛Failed to enable unit: Refusing to operate on linked unit file sshd.service,这个不用管,是因为之前的旧版本有,需要覆盖
sudo systemctl restart sshd
# 重新创建ssh链接
# 查看版本
ssh -V
# 正常应该输出 OpenSSH_9.9p2, OpenSSL 3.2.1
Authorship: 作者
Article Link: https://raye.wang/2025/04/01/ubuntu%E9%80%9A%E8%BF%87%E6%BA%90%E7%A0%81%E7%BC%96%E8%AF%91%E7%9A%84%E6%96%B9%E5%BC%8F%E5%8D%87%E7%BA%A7openssh%E7%89%88%E6%9C%AC%E5%88%B09.9p2/
Copyright: All posts on this blog are licensed under the CC BY-NC-SA 4.0 license unless otherwise stated. Please cite Raye Blog !