StrictModes是OpenSSH服务端的安全机制,用于在认证前严格检查用户主目录、.ssh目录及authorized_keys文件的所有权和权限:主目录与.ssh目录须为700且属用户自身,authorized_keys须为600;默认启用且作用路径固定,不支持自定义。

StrictModes 是 OpenSSH 服务端(sshd)的一项关键安全机制,它不是用来“强制要求全路径核验”,而是控制 SSH 在认证前是否检查用户家目录及 .ssh 相关文件的所有权(owner)和权限(mode)是否足够严格。它的作用范围是固定的、硬编码的路径集合,不支持自定义“全路径列表”或通配符扩展。
如果你遇到免密登录失败、server refused our key 或控制器无法启停成员等问题,且临时关闭 StrictModes 后恢复正常,说明问题根源正是这些路径的权限或归属不符合 SSH 的默认安全策略。
以下是真正有效的配置与修复方式:
✅ 正确理解 StrictModes 的作用范围
StrictModes yes(默认启用)会强制检查以下固定路径:
- 用户的主目录(如
/home/username) - 主目录下的
.ssh/目录(即$HOME/.ssh) -
.ssh/authorized_keys文件
(部分场景还涉及~/.ssh/id_rsa等私钥文件,但主要是服务端校验时读取authorized_keys)
它不会检查任意路径,也不会校验 /etc/ssh/ 下的系统级密钥(如 ssh_host_rsa_key),那些由 HostKey 指定,走另一套验证逻辑。
✅ 必须满足的权限与归属规则
对每个被检查路径,需同时满足:
- 所有权正确:目录/文件必须属于该登录用户(不能是 root 或其他用户)
-
权限足够严格:
- 主目录:
700(仅属主可读写执行) -
.ssh/目录:700 -
.ssh/authorized_keys:600(仅属主可读写) -
.ssh/id_rsa(若用作客户端密钥):600 -
.ssh/id_rsa.pub:可放宽至644(因公钥本就可公开)
- 主目录:
⚠️ 常见错误:权限设为
755、775、644,或目录属组为wheel/sshusers但未禁写;或authorized_keys属于 root 却用普通用户登录。
✅ 配置与验证步骤
- 编辑
/etc/ssh/sshd_config,确认存在且未注释:StrictModes yes
- 修正目标用户的文件权限(以
deploy用户为例):sudo chown -R deploy:deploy /home/deploy sudo chmod 700 /home/deploy sudo chmod 700 /home/deploy/.ssh sudo chmod 600 /home/deploy/.ssh/authorized_keys
- 重启服务生效:
sudo systemctl restart sshd
✅ 特殊场景:集群控制器使用的专用 SSH 密钥路径
如知识库中提到的 <server_config>/resources/security/ssh/ 路径,虽不在 StrictModes 默认检查范围内,但集群软件自身会做类似校验。此时需额外确保:
- 该目录及其下
id_rsa、id_rsa.pub也遵循700/600规则 - 所有者必须是运行控制器进程的用户(非 root,除非明确设计如此)
不复杂但容易忽略

















