ssh私钥文件权限必须设为600,因为openssh强制校验以防止其他用户读取敏感凭证;私钥文件(如id_rsa、id_ed25519等)及~/.ssh目录(应设700)均需严格权限控制。

SSH密钥文件权限必须设为 600(即仅所有者可读写),否则 OpenSSH 客户端会拒绝使用该私钥,直接报错 Permissions are too open。这不是建议,而是强制安全策略。
为什么必须是 600?
SSH 私钥本质是身份凭证,等同于密码甚至更敏感。如果权限过宽(如 644、666 或 755),其他用户或进程可能读取私钥内容,导致未授权登录。OpenSSH 在加载私钥前会严格检查文件权限,只要组或其他用户有读/执行权限,就中止加载并报错。
哪些文件需要设为 600?
以下私钥类文件必须设置为 600:
- ~/.ssh/id_rsa(默认 RSA 私钥)
- ~/.ssh/id_ecdsa、~/.ssh/id_ed25519
- 任何自定义路径的私钥(如 ~/keys/mykey)
- ~/.ssh/config 中引用的 IdentityFile 对应文件
如何正确设置权限?
使用 chmod 命令一键修正:
chmod 600 ~/.ssh/id_rsa chmod 600 ~/.ssh/id_ed25519 chmod 600 ~/keys/deploy_key
注意:不要对公钥(如 id_rsa.pub)设 600——公钥本应可公开,通常用 644 即可。
连带目录权限也不能忽略
~/.ssh 目录本身也受限制:必须禁止组和其他用户写入,推荐设为 700:
chmod 700 ~/.ssh
若目录权限为 755 或 775,部分 SSH 版本(尤其是较新 OpenSSH)也会警告或拒绝读取密钥,即使私钥文件权限正确。










