标准安全权限必须为600,因OpenSSH服务端强制校验:文件所有者须为登录用户,且组和其他用户无任何读写权限;权限宽松(如644)时sshd会静默跳过该文件,导致“Permission denied (publickey)”。

Linux 运维中配置 ~/.ssh/authorized_keys 的标准安全权限为 600,这是 OpenSSH 强制要求的硬性安全策略。权限不合规会导致密钥认证静默失败(报错 Permission denied (publickey)),且不会给出明确提示。
为什么必须是 600?
OpenSSH 服务端在读取 authorized_keys 文件前会做严格校验:
- 文件所有者必须是当前登录用户(不能是 root 拥有普通用户文件)
- 文件不能被组或其他人读写(即
group和others位必须全为---) - 若权限宽松(如 644、664、755 等),sshd 直接跳过该文件,拒绝使用其中任何公钥
这并非建议,而是强制行为——源于防止私钥泄露后被提权利用的设计逻辑。
设置 600 权限的正确操作步骤
登录目标服务器(即你要免密登录进去的那台),执行:
# 确保 .ssh 目录存在且权限为 700 mkdir -p ~/.ssh chmod 700 ~/.ssh # 确保 authorized_keys 文件存在,并设为 600 touch ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys # 验证结果(输出应为 -rw-------) ls -l ~/.ssh/authorized_keys
⚠️ 注意:不要用
sudo chmod 600 ~/.ssh/authorized_keys(除非你是 root 且在为其他用户配置)。普通用户直接chmod 600即可;若误用 sudo,可能导致文件属主变成 root,反而触发 sshd 拒绝加载。
常见错误与修复
错误现象:
ssh user@host提示Permission denied (publickey),但确认公钥已写入
→ 检查ls -l ~/.ssh/authorized_keys,若显示-rw-r--r--(644)或-rw-rw-r--(664),立即执行chmod 600错误现象:
.ssh目录权限是755或777
→ 执行chmod 700 ~/.ssh,否则 sshd 同样忽略整个目录错误现象:家目录(
~)权限是777或带 sticky bit(如1755)
→ 执行chmod 755 ~(普通用户家目录推荐 755,不可 777)
补充说明
- 公钥内容追加后,无需重启 sshd 服务,权限生效即刻起效
- 若使用
ssh-copy-id部署,它默认会设置好700和600,但仍建议手动验证 - 多用户场景下,每个用户的
~/.ssh/authorized_keys都需单独设置,互不影响
安全权限不是“锦上添花”,而是 SSH 密钥认证能跑起来的前提。


















