strictmodes yes仅校验用户家目录、.ssh目录及authorized_keys文件的权限与所有权,不涉及磁盘加密、tpm、bios等物理层安全;其规则要求家目录和.ssh目录权限≤755且无组/其他用户写权限,.ssh必须700,authorized_keys通常需600。

StrictModes yes 并不核验“全链路物理安全性”,它只做权限与所有权的逻辑校验——这是关键前提,先厘清概念,避免误解。
StrictModes 是 OpenSSH 服务端(sshd)在用户身份验证前执行的一道轻量级安全检查,作用范围明确、有限,仅覆盖以下两个路径及其直接父级:
- 用户家目录(例如
/home/alice或/root) -
.ssh/目录(必须位于家目录内,如/home/alice/.ssh)
它不涉及磁盘加密、BIOS/UEFI 锁定、TPM、硬件隔离、文件系统挂载选项或网络链路层,这些属于操作系统底层或基础设施范畴,StrictModes 完全不感知、也不干预。
StrictModes yes 的实际校验规则
当设为 yes(默认值)时,sshd 在读取 authorized_keys 前会逐项检查:
- 用户家目录(如
/home/alice)- 所有者必须是该用户(UID 匹配)
- 权限不能开放写入给 group 或 others → 允许的权限只有
700、755、750等,但777、730、752等含 group/others 写权限的均被拒绝
-
.ssh/目录- 所有者必须是该用户
- 权限必须为
700(即drwx------),任何其他权限(如755、705)都会导致密钥认证失败
-
~/.ssh/authorized_keys文件- 所有者必须是该用户
- 权限必须为
600或644(OpenSSH 8.8+ 允许644,但要求父目录严格;旧版本通常只认600)
- 上层路径(如
/home目录本身)- 虽不强制所有者,但若
/home权限为777且属主非 root,sshd 可能因路径可被篡改而拒绝加载authorized_keys
- 虽不强制所有者,但若
✅ 正确示例:
/home/alice→drwx------(700),owneralice/home/alice/.ssh→drwx------(700),owneralice/home/alice/.ssh/authorized_keys→-rw-------(600),owneralice
❌ 常见失败场景:
chmod 755 /home/alice→ group/others 可读,StrictModes 拒绝chown root:root /home/alice→ 所有者不是alice,拒绝cp authorized_keys /home/alice/.ssh/后未chown alice:alice→ owner 不匹配- 使用 root 账户生成密钥对并放入普通用户
.ssh/→ owner 是 root,非目标用户
如何真正落实“物理链路安全”?StrictModes 只是起点
StrictModes 是纵深防御的第一环,要提升整体可信度,需配合其他机制:
-
文件系统级防护
- 使用
noexec,nosuid,nodev挂载/home(如/etc/fstab中添加defaults,noexec,nosuid,nodev) - 启用
fscrypt或LUKS加密/home分区,防止离线磁盘窃取
- 使用
-
系统账户与登录控制
- 确保
PermitEmptyPasswords no、PasswordAuthentication no(禁用密码,纯密钥) - 配合
AllowUsers alice或AllowGroups sshusers限制可登录账户范围
- 确保
-
审计与监控
- 开启
LogLevel VERBOSE或INFO,配合journalctl -u sshd追踪权限拒绝事件 - 使用
auditd监控/home/*/和/home/*/.ssh/的 chmod/chown 操作
- 开启
-
自动化加固(推荐)
# 一键修复 alice 用户的 SSH 权限链 sudo chown -R alice:alice /home/alice/.ssh sudo chmod 700 /home/alice /home/alice/.ssh sudo chmod 600 /home/alice/.ssh/authorized_keys sudo chmod 644 /home/alice/.ssh/known_hosts # 可选,非必需
验证 StrictModes 是否生效
修改 /etc/ssh/sshd_config 后务必重启服务:
sudo systemctl restart sshd
然后从客户端尝试连接,并观察服务端日志:
sudo journalctl -u sshd -n 50 --no-pager | grep -i "auth.*key\|strict"
若看到类似:
Authentication refused: bad ownership or modes for directory /home/alice
说明 StrictModes 已起效,并正在拦截不合规配置。
不复杂但容易忽略。











