SSH私钥权限必须设为400或600,严禁开放;~/.ssh目录需700,authorized_keys需600,否则连接失败。三步修复:检查权限、chmod 400私钥、chmod 700目录及600授权文件。

SSH私钥文件权限必须设为严格限制,否则OpenSSH会直接拒绝使用该密钥——这不是警告,而是强制安全机制。核心原则就一条:私钥只能被你本人读取,其他任何人(包括同服务器上的其他用户)都不能访问。
私钥文件必须设为400或600
私钥(如 id_rsa)不能有组或其他用户的任何权限,哪怕只是“可读”也不行。
-
推荐设为 400:仅所有者可读(
r--------),防止误编辑或覆盖 -
允许设为 600:所有者可读写(
rw-------),仅在需要修改私钥内容时使用(极少见) -
绝对禁止 644、755、777 等开放权限:一旦出现,SSH连接立即报错:
Permissions 0644 for 'id_rsa' are too open. It is required that your private key files are NOT accessible by others.
连带关键文件也要同步加固
单改私钥不够,整个 ~/.ssh 目录链路上的权限都需匹配:
-
~/.ssh 目录:必须为
700(drwx------),否则 SSH 客户端会跳过该目录下所有密钥 -
authorized_keys:设为
600(-rw-------),避免他人篡改可登录公钥列表 -
公钥文件(如 id_rsa.pub):权限宽松些也无害,通常设为
644即可
三步快速修复权限问题
发现连接失败?大概率是权限出错。按顺序执行:
- 检查当前权限:
ls -l ~/.ssh/id_rsa ~/.ssh - 收紧私钥:
chmod 400 ~/.ssh/id_rsa - 收紧目录与授权文件:
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
养成自动检查习惯
定期扫描本地密钥权限是否合规,避免疏忽引入风险:
- 一键检查所有私钥:
find ~/.ssh -type f \( -name "id_*" ! -name "*.pub" \) -exec ls -l {} \; - 确认输出中每行开头都是
-r--------或-rw------- - 配合
ssh-agent使用时,仍需确保磁盘上私钥权限正确,agent 不会绕过这一校验

















