SSH 对私钥文件的权限要求非常严格:必须设置为 600,否则 OpenSSH 会直接拒绝使用,并提示 “Permissions are too open” 等常见报错。需要设置为 600 的,不仅包括客户端私钥文件(如 ~/.ssh/id_rsa),还包括服务端的 authorized_keys 文件以及自定义路径下保存的私钥;同时,~/.ssh 目录权限应设置为 700,而公钥文件通常建议设置为 644。

SSH 私钥文件必须设置为 600 权限,否则 OpenSSH 会因权限过于开放而直接拒绝读取,并报出“Permissions are too open”错误。这并不是可选配置,而是 SSH 密钥认证中的强制安全检查。
哪些文件需要设置为 600
所有 SSH 私钥文件都应统一设置为 600 权限,常见包括:
- ~/.ssh/id_rsa(默认 RSA 私钥文件)
- ~/.ssh/id_ed25519、~/.ssh/id_ecdsa
- 自定义路径中的私钥,例如 ~/keys/deploy_key
- ~/.ssh/authorized_keys(服务器端公钥授权列表文件)
如何通过 chmod 设置 600 权限
在 Linux 或 macOS 终端中执行对应命令即可,以下是一行一个的常用写法:
chmod 600 ~/.ssh/id_rsachmod 600 ~/.ssh/id_ed25519chmod 600 ~/.ssh/authorized_keys- 如果私钥保存在其他位置,例如
~/mykey,则执行chmod 600 ~/mykey
.ssh 目录权限也要同时设置为 700
仅仅修改私钥文件权限还不够,~/.ssh 目录本身也必须严格限制访问权限:
- 执行
chmod 700 ~/.ssh - 检查结果:运行
ls -ld ~/.ssh,输出应显示为drwx------ - 如果目录权限是 755 或 775,较新的 OpenSSH 版本可能会直接忽略密钥文件,即使私钥权限已经设置正确
不要混淆公钥和用户主目录权限
公钥文件(如 id_rsa.pub)通常不需要设置为 600,配置为 644 即可:
chmod 644 ~/.ssh/id_rsa.pub- 用户主目录(如
/home/username)一般建议保持 755,绝不能设置为 777——否则 OpenSSH 可能因权限过宽而拒绝加载 SSH 密钥
