核心是SSH强制安全拦截,需三步修复:chmod 700 ~/.ssh、chmod 600 ~/.ssh/id_rsa、chown $USER:staff ~/.ssh/id_rsa。
遇到“permissions for 'id_rsa' are too open”这类错误,核心是 macos 的 ssh 客户端拒绝使用权限过宽的私钥文件——这不是警告,而是强制拦截。它和证书本身无关,但常被误认为是“证书问题”。实际只需三步:改目录权限、改私钥权限、验证归属。
确认并修复 .ssh 目录权限(必须是 700)
SSH 要求 .ssh 文件夹仅所有者可读、写、执行,其他用户完全不可访问。哪怕私钥权限正确,目录权限不对也会报错。
- 终端运行:ls -ld ~/.ssh,检查输出是否类似 drwx------(即权限为 700)
- 如果不是,立即执行:chmod 700 ~/.ssh
- 若提示 Operation not permitted,说明该目录可能被锁定或受 SIP 保护——先检查是否被右键→“显示简介”中勾选了“锁定”,取消后再试
收紧私钥文件权限(必须是 600 或 400)
私钥(如 id_rsa、xxx.pem)不能有任何“组”或“其他用户”的读取权限。644、755、甚至 640 都会被拒绝。
- 查看当前权限:ls -l ~/.ssh/id_rsa(路径按你实际用的调整)
- 设为仅所有者可读写:chmod 600 ~/.ssh/id_rsa
- 若你确定不需要写入(比如只用于连接),更保守可设为只读:chmod 400 ~/.ssh/id_rsa
- 注意:不要用 sudo chmod 除非文件归属不是你本人——否则会把权限改对了,但归属仍错,SSH 依然不认
检查文件归属是否为你当前用户
即使权限数字正确,如果文件所有者不是你(比如是 root 或其他用户),SSH 同样拒绝加载。
- 运行:ls -l ~/.ssh/id_rsa,看第三列是否是你自己的用户名(如 yourname)
- 如果不是,执行:chown $USER:staff ~/.ssh/id_rsa
- 顺带也重置目录归属:chown $USER:staff ~/.ssh
- 避免误用 sudo chown ——除非你明确知道归属被改成了 root,且当前用户无权改回
额外提醒:别忽略公钥和配置文件
虽然公钥(id_rsa.pub)没那么严格,但建议统一设为 644;而 config 文件若存在,也应设为 600,否则某些 SSH 配置可能被跳过。
- chmod 644 ~/.ssh/id_rsa.pub
- chmod 600 ~/.ssh/config(如果用了自定义 SSH 配置)
- 最后测试:ssh -T git@github.com 或你常用的目标地址


















