You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修改/etc/ssh/moduli后是否需固定OpenSSH软件包?

关于修改/etc/ssh/moduli后包更新是否会被覆盖的问题

好问题!针对你在Debian 9.3和Linux Mint 18.3上的情况,咱们从Debian系(包括Mint,因为它基于Ubuntu,而Ubuntu又源自Debian)的包管理规则来拆解:

核心逻辑:dpkg对修改后配置文件的处理

Debian/Ubuntu的dpkg工具在处理包更新时,会自动检测配置文件是否被用户修改过。对于/etc/ssh/moduli这个文件(它属于openssh-client包,你可以用dpkg -S /etc/ssh/moduli命令确认归属),如果你已经修改过它,当你更新openssh-client包时:

  • dpkg不会直接覆盖你的修改版本,而是弹出交互提示,给你几个选项:
    • 保留你当前的修改版本(默认选项,一般选N)
    • 替换成包提供的新版本(选Y)
    • 对比你的版本和新版本的差异(选D)
    • 查看更多帮助(选H)

避免交互提示的进阶方案

如果你不想每次更新都被这个提示打扰,又不想固定openssh-server/openssh-client包,可以用dpkg-divert命令把这个文件“转移”到安全位置,让包更新时不触碰你的自定义版本:

# 告诉dpkg要重定向这个文件
sudo dpkg-divert --local --rename --add /etc/ssh/moduli
# 把你修改后的文件移到新位置
sudo mv /etc/ssh/moduli /etc/ssh/moduli.custom
# 创建符号链接,让系统仍能找到它
sudo ln -s /etc/ssh/moduli.custom /etc/ssh/moduli

这样后续更新openssh-client时,包会把新的默认moduli文件安装到/etc/ssh/moduli.dpkg-dist,而你的自定义版本会一直保留在/etc/ssh/moduli.custom,完全不会被覆盖。

总结

  • 默认情况下,你修改后的/etc/ssh/moduli不会被自动覆盖,更新时会让你手动选择是否替换;
  • 如果想彻底跳过交互提示,用dpkg-divert是最适合的方案,不用固定包也能保住你的修改。

内容的提问来源于stack exchange,提问作者Vlastimil Burián

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:03:21