【转载】升级OpenSSH的正确姿势!!!
内容提要
本文讨论了OpenSSH CVE-2024-6387的升级问题,指出了错误的升级方法并提供了正确的步骤。同时解释了环境变量对升级结果的影响,并给出了替换二进制文件和重启sshd服务的操作。
延伸解读
环境变量如何误导升级结果
文章指出,环境变量PATH的顺序可能导致命令定位错误。当PATH中/usr/local/sbin位于/usr/sbin之前时,执行sshd -V会优先找到/usr/local/sbin下的新二进制文件,从而显示新版本号,但实际运行的sshd服务可能仍是/usr/sbin下的旧版本。因此,仅凭sshd -V的输出判断升级完成并不可靠,需结合其他检查方法。
验证sshd是否真正升级的要点
要确认sshd是否升级,不能只看版本号输出。文章建议检查二进制文件的创建日期:ls -la /usr/local/sbin/sshd和/usr/sbin/sshd,对比日期差异;使用ps aux | grep sshd查看当前运行的sshd路径;以及查看systemd服务文件cat /etc/systemd/system/sshd.service,确认服务实际使用的二进制文件路径。这些步骤能避免被环境变量误导。
正确升级OpenSSH的关键步骤
文章给出的正确升级流程包括:更新系统、安装依赖、下载源码、配置、编译和安装。关键一步是替换二进制文件:备份原文件mv /usr/sbin/sshd /usr/sbin/sshd.old,然后将新编译的sshd复制到/usr/sbin/sshd,最后重启sshd服务。仅执行make install而不替换二进制文件,升级不会生效。
升级后需注意的细节
替换二进制文件并重启sshd服务后,重新连接时可能会提示密钥指纹变更,这是正常现象,同意接受即可。此外,文章提醒ssh是客户端,sshd才是服务端,用ssh -V检查版本可能不准确。其他OpenSSH组件也可参照sshd的替换方法处理。
Q&A
如何正确升级OpenSSH以修复CVE-2024-6387漏洞?
正确的升级步骤包括更新系统、安装依赖、配置、编译和安装OpenSSH,最后替换二进制文件并重启sshd服务。
为什么只执行make install后没有完成OpenSSH的升级?
因为只执行make install后未替换二进制文件,导致升级未完成。
如何检查当前运行的sshd版本?
可以通过命令ps aux | grep sshd查看当前运行的sshd,或使用ls命令查看二进制文件的创建日期。
环境变量如何影响OpenSSH的升级结果?
环境变量可能导致系统定位到旧版本的sshd,从而输出错误的版本信息,误以为升级完成。
在升级OpenSSH时,如何备份原有的sshd文件?
可以使用命令mv /usr/sbin/sshd /usr/sbin/sshd.old来备份原有的sshd文件。
重启sshd服务后会发生什么?
重启sshd服务后,可能会提示密钥指纹变更,用户需同意接受。