strictmodes是openssh默认启用的安全机制,用于强制校验用户主目录、~/.ssh目录及authorized_keys文件的属主和权限:主目录禁止组/其他用户写入,~/.ssh权限须为700,authorized_keys须为600,且整条路径不得含宽松符号链接。

Linux 系统中开启 SSH 服务的严格模式(StrictModes),本质是启用 OpenSSH 对密钥相关路径权限的强制校验机制。它不是单独“开启”的功能,而是默认启用的安全策略,只要配置得当、权限合规,就会自动生效。
StrictModes 是什么
StrictModes 是 sshd 的一项安全检查开关,控制服务端是否严格验证用户主目录、~/.ssh 目录及 authorized_keys 文件的属主和权限。一旦启用(默认即为 yes),sshd 在认证前会逐级检查:
- 用户主目录(如
/home/username)不能被组或其他用户写入(禁止 775、777、757 等) -
~/.ssh目录权限必须为700(仅用户可读写执行) -
~/.ssh/authorized_keys权限必须为600(仅用户可读写) - 整条路径中不能存在权限宽松的符号链接(如指向 NFS 共享)
确认 StrictModes 已启用
检查服务端配置文件 /etc/ssh/sshd_config 中是否存在以下行:
StrictModes yes
该选项在绝大多数发行版中默认开启,无需手动添加。若被注释或设为 no,需取消注释并设为 yes,然后重载服务:
sudo systemctl reload sshd
让 StrictModes 生效的关键操作
StrictModes 不是“打开就运行”,它依赖路径权限真实合规。常见修复动作包括:
- 重设主目录权限:
chmod 755 /home/username(推荐值,700 或 750 也可) - 修正
~/.ssh权限:chmod 700 ~/.ssh - 修正
authorized_keys权限:chmod 600 ~/.ssh/authorized_keys - 确保属主正确:
chown -R username:username /home/username - SELinux 环境下补上下文:
restorecon -Rv ~/.ssh
验证是否真正起作用
故意放宽权限后测试即可确认:
- 临时改主目录为
775:chmod 775 /home/username - 尝试 SSH 登录,应立即返回
Permission denied (publickey),且/var/log/auth.log中可见类似提示:Authentication refused: bad ownership or modes for directory /home/username - 恢复权限后连接恢复正常,说明 StrictModes 正在主动拦截不合规路径











