关于 openssh 漏洞版本修复以及 SSH 密钥交换漏洞修复的参考步骤(这里以升级到 openssh-9.8p1 为例)
1. 准备依赖(基于 Debian10)
首先找一台可以联网的 Debian10 服务器,执行下述命令进行依赖下载
apt update
apt-get install -y apt-rdepends
cd ~/ && wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz
a. 待修复服务器和外网通
apt-get install build-essential zlib1g-dev libssl-dev libpam0g-dev libselinux1-dev -y
b. 待修复服务器不通外网
mkdir ~/openssh-dep-pkgs
cd ~/openssh-dep-pkgs
apt-rdepends build-essential zlib1g-dev libssl-dev libpam0g-dev libselinux1-dev | grep -v "^ " | grep -v "^Reverse Depends:" > packages.txt
cat packages.txt | xargs -n 1 apt-get download
cd ../ && tar -zcvf openssh-dep-pkgs.tar.gz openssh-dep-pkgs
# 把openssh-dep-pkgs.tar.gz上传到待修复服务器~/下
# 登录到待修复服务器执行
cd ~/ && tar -zxvf openssh-dep-pkgs.tar.gz && cd openssh-dep-pkgs && dpkg -i *.deb
echo Y | apt --fix-broken install
2. 编译
cd ~/ && tar -zxvf openssh-9.8p1.tar.gz && cd ~/openssh-9.8p1
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib
make && make install
3. 修改/lib/systemd/system/ssh.service 中 Type=notify 为 Type=simple
sed -i 's/Type=notify/Type=simple/g' /lib/systemd/system/ssh.service
4. 重启 sshd 服务
systemctl daemon-reload && systemctl restart sshd
5. 查看 SSH 版本(输出为 9.8p1 即完成)
ssh -V