You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

读取id_rsa文件、推送Git代码报权限拒绝错误如何排查解决

问题原因

两个报错直接关联,核心问题集中在SSH密钥的权限、配置两个层面:

  • 执行cat id_rsa报Permission denied,要么是你没切到~/.ssh目录、在其他无该文件的路径下直接执行命令,要么是id_rsa私钥的属主、权限配置不符合要求,当前系统用户没有读取权限。
  • GitHub推送报publickey权限拒绝,本质是SSH握手阶段客户端拿不到合法私钥和GitHub侧存储的公钥匹配:要么是私钥因为权限问题被SSH客户端判定为不安全拒绝加载,要么是你没把对应公钥绑定到GitHub账号,要么是本地ssh-agent没加载私钥导致握手时未发送有效凭证。
修复步骤

按顺序操作即可,不需要多余配置:

  1. 先进入SSH默认工作目录,修正密钥权限。SSH客户端对私钥权限有强制校验,只要私钥给组、其他用户留了读权限,会直接判定为不安全拒绝加载:
cd ~/.ssh
# 私钥配置为仅当前用户可读写
chmod 600 id_rsa
# 公钥可公开读,权限要求宽松
chmod 644 id_rsa.pub

如果执行chmod时提示权限不足,先切root修改文件属主再调整权限,把命令里的your_username换成你当前登录系统的用户名即可:

sudo chown your_username:your_username id_rsa id_rsa.pub
  1. 验证私钥可读性,执行cat id_rsa,正常输出以-----BEGIN OPENSSH PRIVATE KEY-----开头、-----END OPENSSH PRIVATE KEY-----结尾的内容就说明权限正常。如果还是报错,说明本地根本没有生成过SSH密钥对,直接执行ssh-keygen -t ed25519 -C "你的GitHub绑定邮箱"一路回车生成新的密钥对即可。
  2. 把私钥加载到本地ssh-agent,避免SSH握手时找不到对应密钥:
# 启动ssh-agent并加载环境变量
eval "$(ssh-agent -s)"
# 添加私钥到agent,生成密钥时设置了密码的话这里要输对对应密码
ssh-add ~/.ssh/id_rsa
  1. 绑定公钥到GitHub账号:执行cat ~/.ssh/id_rsa.pub,把输出的整行公钥完整复制,打开GitHub个人设置的「SSH and GPG keys」页面,新建SSH密钥,把复制的公钥粘贴进去保存。
  2. 连通性校验:执行ssh -T git@github.com,返回Hi 你的GitHub用户名! You've successfully authenticated, but GitHub does not provide shell access.就说明配置全部生效,后续推送拉取代码都不会再报权限错误。

注意:id_rsa是你的私钥文件,绝对不要把内容泄露给其他人,持有私钥就可以完全操作你绑定的GitHub账号,不要随便贴到公开渠道。

内容的提问来源于stack exchange,提问作者TheParrot12345

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 14:48:15