chattr +i 锁定 authorized_keys 文件可防止任何用户(含 root)修改、重命名、删除或追加内容,需先备份、设权限、验归属,再执行锁定并用 lsattr 验证 i 标志;更新密钥时须先解锁再重锁,且须配合禁密码登录等其他防护措施。

用 chattr +i 锁定 authorized_keys 文件,是最直接有效的防篡改手段。该操作会让文件进入“不可修改”状态:任何用户(包括 root)都无法编辑、重命名、删除或追加内容,除非先解除锁定。
锁定前的关键准备
确保你已确认当前公钥列表完整且可信,因为加锁后无法实时增删密钥。建议同步完成以下动作:
- 备份原始
authorized_keys文件,例如:cp ~/.ssh/authorized_keys ~/.ssh/authorized_keys.bak - 检查文件权限是否合理:
chmod 600 ~/.ssh/authorized_keys,chmod 700 ~/.ssh - 确认该文件不属于 root 用户以外的其他账户误配(如服务账户被滥用)
执行锁定操作
以 root 或对应用户身份运行:
chattr +i ~/.ssh/authorized_keys
注意:~ 会自动展开为当前用户家目录;若需锁定系统级 SSH 配置(如 /etc/ssh/sshd_config),也适用相同命令,但需 root 权限。
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
验证是否生效:lsattr ~/.ssh/authorized_keys,输出中应含 i 标志,例如:----i---------e---
后续维护与风险提示
加锁不是一劳永逸,需配套管理流程:
- 需要更新密钥时,必须先解除锁定:
chattr -i ~/.ssh/authorized_keys,操作完再重新加锁 - 不要对整个
~/.ssh目录使用+i,否则连known_hosts更新都会失败;只锁目标文件更精准 - 该机制依赖 ext4/xfs 等支持扩展属性的文件系统,NFS 挂载点通常不生效
- 若服务器被提权,攻击者仍可执行
chattr -i解锁——所以它必须配合其他防护(如禁用密码登录、限制 IP、审计日志)一起使用
这个操作本身很简单,但真正起作用的前提是把它放进你的 SSH 安全加固闭环里。










