在TG上看到 OpenSSH出现高危远程代码执行漏洞-影响超过1400万台暴露在公网上的服务器 一文,遂用 ssh -v
检查了一下自己的SSH版本,似乎在受影响范围,遂打算赶紧升级一下。
问了一下GPT,给的方案是 sudo apt update
,但是不管用,后找了一篇教程 ssh爆漏洞了,手动更新OpenSSH教程,整理了一下相关资讯,教程和注意事项如下。
sshd_config
设置会被覆盖,再重启服务器前请重新设置配置文件。我按手动方式操作完后出现了问题,后重新使用 apt-get 安装解决
sudo apt-get purge openssh-server
sudo apt-get install openssh-server
如果你是Debian12的话可以使用apt包管理工具一键升级
sudo apt update
sudo apt upgrade openssh-server
ssh -V
sudo systemctl restart ssh
查看版本
ssh -v
sudo apt update
sudo apt upgrade
更新安装必须的包
sudo apt-get -y update
sudo apt-get install build-essential zlib1g-dev libssl-dev
下载最新的包:
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz
解压:
tar -xzf openssh-9.8p1.tar.gz
cd openssh-9.8p1
编译:
./configure
make
安装
sudo make install
重启服务&查看版本
sudo systemctl restart ssh
ssh -V
如果版本没显示openssh-9.8p1,就是需要添加环境变量:
echo 'export PATH=/usr/local/bin:/usr/local/sbin:$PATH' >> ~/.bashrc
验证生效
source ~/.bashrc
查看版本(出现openssh-9.8p1就OK)
ssh -V
修改 ssh.service 文件中的 ExecStartPre、ExecStart 和 ExecReload 行,
将 /usr/sbin/sshd 改为 /usr/local/sbin/sshd
sudo sed -i 's|ExecStartPre=/usr/sbin/sshd|ExecStartPre=/usr/local/sbin/sshd|; s|ExecStart=/usr/sbin/sshd|ExecStart=/usr/local/sbin/sshd|; s|ExecReload=/usr/sbin/sshd|ExecReload=/usr/local/sbin/sshd|' /lib/systemd/system/ssh.service
确认修改内容:
grep -E 'ExecStartPre|ExecStart|ExecReload' /lib/systemd/system/ssh.service
重新加载服务:
sudo systemctl daemon-reload
sudo systemctl restart sshd
列出正在运行的SSH进程(确认是否是 /usr/local/sbin/sshd)
ps -ef | grep sshd
清除旧版本
sudo rm /usr/sbin/sshd