升级OpenSSH的正确姿势!!!
最近OpenSSH CVE-2024-6387闹得沸沸扬扬,网上也流传出了升级教程,但有些教程是错误的!!!
错误做法
错误示例:只make install
后就不管了
这里make install
完后需要替换二进制文件才能真正完成升级!!!
当然有些人可能会说为什么我make install
后使用sshd -V
输出版本号是9.8p1,那是因为环境变量的锅!!!
检查方法很简单
输入ls /usr/local/sbin -la | grep sshd
可以发现该二进制文件是make install时生成的(日期),然后输入ls /usr/sbin -la | grep sshd
,可以发现这个sshd文件创建日期远落后于第一个sshd文件(当然你也可以通过绝对路径运行/usr/sbin/sshd -V
输出版本信息查看),接着我们输入ps aux | grep sshd
可以发现当前正在运行的是/usr/sbin
下的sshd!!!并且通过cat /etc/systemd/system/sshd.service
也可以看出sshd服务是使用的/usr/sbin
下的sshd,跟新版本的sshd半毛钱关系没有!!!
人话来说就是如升
原因分析:环境变量的锅
输入echo $PATH
可以看到自己当前的环境变量
这是我的环境变量:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
我也不知道是make install时添加了环境变量还是我之前自己添加了环境变量,导致当我输入sshd -V
时系统将文件定位到了/usr/local/sbin
目录下的sshd,ssh -V
则定位到了/usr/local/bin
下的ssh二进制文件,因此输出了9.8p1的版本信息,让我误以为升级完成(网上部分教程害人不浅),但其实根本没有完成升级!!!
Tips:部分教程用
ssh -V
输出版本信息,ssh
是客户端,sshd
才是服务端
正确做法
前面的步骤都是一样的
1 | sudo apt-get update |
然后这里我们需要替换二进制文件
这里因为我使用软连接好像有点问题因此选择直接把二进制文件copy过来(这里先把sshd的写了,openssh其他组件可以依葫芦画瓢进行替换)
1 | #备份原来的sshd |
重新连接后会提示密钥指纹变更的情况,同意接受即可
下面是可选更新组件
1 | #备份原来的组件 |
Tips:sshd的配置文件将会定位到
/usr/local/etc
下,因此可能需要迁移原配置文件。
简单方法
使用--prefix
来手动指定安装目录
将原先./configure
命令改为./configure --prefix=/usr --sysconfdir=/etc/ssh
,这样在完成make install后将会将编译完成的软件安装至/usr/sbin
和/usr/bin
,而不会安装在/usr/local/sbin
内,并且配置文件无需迁移,后面的复制命令也无需使用。
Use this card to join MyBlog and participate in a pleasant discussion together .
Welcome to GoodBoyboy 's Blog,wish you a nice day .