AWS EC2手动升级OpenSSH 8.1后自动回退至7.6是什么原因?
问题原因
- 你通过手动编译的方式安装OpenSSH 8.1,没有将该版本纳入系统默认的APT包管理体系,系统中原本预装的openssh-server、openssh-client软件包仍然处于APT的管理范围内。
- Ubuntu默认开启了*无人值守自动更新(unattended-upgrades)*服务,会定期拉取官方源的软件安全更新,当检测到openssh相关包有7.6分支的安全更新推送时,会自动安装并覆盖你手动编译写入/usr目录的二进制文件,最终导致版本回退。
解决方案
根据你的使用场景可以选择以下任意一种方案:
方案1:锁定APT中openssh相关包的更新(适合保留当前手动编译版本的场景)
- 先验证当前手动编译的OpenSSH 8.1运行正常,避免操作后SSH服务失联
- 执行命令锁定openssh包,禁止APT更新覆盖:
sudo apt-mark hold openssh-server openssh-client
- 验证锁定结果,输出包含openssh-server、openssh-client即为成功:
apt-mark showhold | grep openssh
如果担心残留的APT包仍有冲突,可在确认手动编译版本正常运行后,卸载系统预装的openssh包:
sudo apt remove -y openssh-server openssh-client
方案2:将OpenSSH纳入包管理体系(适合长期维护的场景)
放弃手动编译的安装方式,选择符合版本要求的托管包源安装OpenSSH,后续更新会自动适配,不会出现版本回退问题。
注意:不建议直接关闭全局无人值守自动更新,会导致系统错过其他核心组件的安全补丁,提升入侵风险。操作完成后建议重启sshd服务,执行
ssh -V确认版本符合预期。
内容的提问来源于stack exchange,提问作者Ajouve
相关产品推荐
相关产品推荐

