用户主目录权限过宽(如775、777)会导致ssh公钥认证被拒绝,因openssh强制校验路径安全:主目录须为755/700/750且group/other不可写,同时需确保~/.ssh为700、authorized_keys为600,并修复属主、selinux上下文及重启sshd。

用户主目录权限过宽会触发 SSH 登录失败、安全审计告警,甚至被安全扫描工具标记为高风险项。根本原因在于 OpenSSH 和系统加固策略对路径链的安全校验:只要 /home/username 目录对组或其他用户开放了写权限(如 775、777、757),sshd 就会直接拒绝公钥认证,同时这类配置也违背最小权限原则。
确认主目录权限是否违规
在服务器上运行以下命令查看当前设置:
ls -ld /home/your_username
重点关注输出中的权限字段(如 drwxrwxr-x):
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- ✅ 合规示例:drwxr-xr-x(即 755)、drwx------(700)、drwxr-x---(750)
- ❌ 违规示例:drwxrwxr-x(775)、drwxrwxrwx(777)、drwxr-xr-w(757)——只要 group 或 other 有 w 权限,就视为不安全
修复主目录权限
以 root 身份执行以下操作:
- 重设权限为推荐值:chmod 755 /home/your_username(兼顾安全与兼容性)
- 确保属主属组正确:chown your_username:your_username /home/your_username
- 若启用 SELinux,同步恢复上下文:restorecon -Rv /home/your_username
- 重启 SSH 服务使检查立即生效:systemctl restart sshd
连带检查关键子路径
主目录权限只是起点,整个认证路径都需满足安全要求:
- ~/.ssh 目录必须为 700:chmod 700 ~/.ssh
- ~/.ssh/authorized_keys 必须为 600:chmod 600 ~/.ssh/authorized_keys
- 避免路径中存在符号链接指向 NFS、Samba 等外部挂载点——这些位置常无法严格控制权限
纳入常态化监控
单次修复不能一劳永逸,建议加入自动巡检:
- 用定时任务每周扫描:find /home -maxdepth 1 -type d -perm /002 -ls 2>/dev/null(找其他用户可写目录)
- 将合规权限值固化为基线,脚本比对并告警异常变更
- 在主机上线或镜像构建阶段集成权限校验(如 Ansible Playbook 中加入 chmod/chown 任务)










