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

已在GitHub个人资料中配置SSH密钥,如何使用该密钥修改所有仓库并解决推送时的权限拒绝问题

解决GitHub SSH密钥权限拒绝问题并实现仓库修改操作

咱们一步步排查并解决这个Permission denied (public key)错误,同时确保你能通过SSH正常操作所有GitHub仓库:

1. 先确认SSH密钥的基础配置是否正确

  • 首先检查本地密钥对:运行ls -la ~/.ssh,确认存在你的私钥(比如你提到的directorytokey)和对应的公钥(后缀为.pub的文件)。如果公钥还没上传到GitHub,复制公钥的全部内容,到GitHub账号的「Settings → SSH and GPG keys」页面添加新的SSH密钥。
  • 验证GitHub是否能识别你的密钥:执行ssh -T git@github.com。如果成功,会看到类似Hi 你的用户名! You've successfully authenticated, but GitHub does not provide shell access.的提示;如果还是报错,说明问题出在密钥加载或配置上。

2. 修复SSH Agent与密钥加载问题

你已经尝试了启动agent和添加密钥,但可能没生效,试试这些细节:

  • 确认SSH Agent是否在运行:执行echo $SSH_AGENT_PID,如果输出一串数字,说明agent在运行;如果没有输出,重新启动:eval "$(ssh-agent -s)"。
  • 确保密钥路径正确:添加密钥时,绝对路径要准确,比如你的密钥在~/.ssh/directorytokey,执行ssh-add ~/.ssh/directorytokey。如果报错Could not open a connection to your authentication agent.,可以先运行ssh-agent bash,再执行ssh-add命令(部分终端环境需要这样关联agent)。
  • 修正密钥权限:SSH对文件权限要求严格,私钥必须是600权限,公钥是644。执行以下命令:
    chmod 600 ~/.ssh/directorytokey
    chmod 644 ~/.ssh/directorytokey.pub
    

3. 配置SSH Config文件强制指定密钥

创建或修改~/.ssh/config文件,让SSH连接GitHub时优先使用你的指定密钥,避免混淆其他密钥:

Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/directorytokey  # 替换成你的私钥路径
  IdentitiesOnly yes

保存文件后,再次执行ssh -T git@github.com验证是否成功。

4. 确认仓库远程地址是SSH格式

进入本地仓库目录,执行git remote -v,检查输出的远程地址是否为git@github.com:你的用户名/仓库名.git格式。如果是https://开头的HTTPS地址,需要改成SSH格式:

git remote set-url origin git@github.com:你的用户名/仓库名.git

5. 最后:通过SSH操作GitHub仓库的基本流程

搞定以上配置后,你就可以正常通过SSH操作仓库了:

  • 克隆仓库:git clone git@github.com:你的用户名/仓库名.git
  • 提交修改后推送:git push origin 你的分支名(比如main或master)
  • 拉取远程更新:git pull origin 你的分支名

如果以上步骤都试过还是不行,可以尝试清除SSH密钥缓存:ssh-add -D,然后重新添加你的密钥。另外,部分系统(比如Mac)的密钥链可能会缓存旧密钥,你可以打开Keychain Access删除旧的GitHub相关密钥后再重试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 11:28:18