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

Git推送/克隆报仓库不存在错误,SSH与权限正常如何排查

问题根因定位

该报错的核心原因是多GitHub账号场景下,SSH代理默认优先使用了个人账号的密钥访问工作仓库,身份不匹配导致GitHub判定无权限。GitHub出于安全考虑,无权限的私有仓库会统一返回「仓库不存在」的提示,不会暴露仓库真实存在。

排查步骤
  • 验证当前SSH连接对应的GitHub账号:
ssh -vT git@github.com

查看输出中Authenticating with public key行对应的密钥文件名,以及最终返回的欢迎信息中的用户名,如果显示的是个人账号名12345doug,即可确认是密钥使用错误。

  • 确认SSH代理加载的密钥列表:
ssh-add -l

如果代理同时加载了个人和工作两个密钥,SSH会按顺序尝试认证,优先使用第一个(通常为个人密钥),认证成功后不会再尝试工作密钥,个人账号无工作仓库权限就会触发报错。

解决方案

可任选以下两种常用方案:

方案1:配置SSH别名区分不同账号

编辑~/.ssh/config文件,添加如下配置:

# 个人GitHub账号
Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa_personal # 替换为个人密钥的实际文件名
  AddKeysToAgent yes

# 工作GitHub账号
Host github-work
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa # 对应你生成的工作密钥路径
  AddKeysToAgent yes

之后修改工作仓库的远程地址,把git@github.com:替换为git@github-work::

# 在工作仓库目录下执行
git remote set-url origin git@github-work:work/analytics-psql-action.git

后续克隆工作仓库时也使用对应别名即可:

git clone git@github-work:work/analytics-psql-action.git

方案2:基于仓库路径自动配置SSH命令

如果不想修改远程地址,可以在工作区专属Git配置~/.git-zen中添加SSH命令配置,指定工作区自动使用工作密钥:

[user]
  email = doug@work.com
  name = doug-work
[core]
  sshCommand = "ssh -i ~/.ssh/id_rsa -o IdentitiesOnly=yes"

其中IdentitiesOnly=yes参数会强制SSH只使用指定的密钥,不会尝试代理中加载的其他密钥,避免身份匹配错误。

修复验证

配置完成后在工作仓库目录执行推送或克隆操作,确认可正常访问即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 01:24:03