GitHub仅单个仓库报Permission denied(publickey)问题求助
解决单一GitHub仓库SSH权限拒绝问题
可能的原因
- 本地SSH配置了针对该仓库的专属密钥映射,对应密钥已失效或路径错误
- 该仓库曾配置过部署密钥(仓库级权限密钥),当前部署密钥已失效或未关联有效私钥
- SSH代理缓存了旧密钥,导致访问该仓库时未使用正确的有效密钥
解决步骤
检查本地SSH配置文件
打开~/.ssh/config,查看是否存在针对该仓库的Host规则(比如早期手动配置过特定密钥访问)。如果有类似下面的配置,确认IdentityFile指向的密钥文件是否存在,且公钥已在GitHub后台配置:Host github.com-[仓库名] HostName github.com User git IdentityFile ~/.ssh/old_key_file若该配置已无用,直接删除或注释掉即可。
测试各SSH密钥的有效性
用本地所有SSH密钥分别测试与GitHub的连接,确认哪个密钥能正常通过认证:ssh -i ~/.ssh/密钥文件名1 -T git@github.com ssh -i ~/.ssh/密钥文件名2 -T git@github.com成功的连接会返回
Hi [你的GitHub用户名]! You've successfully authenticated, but GitHub does not provide shell access.。找到有效密钥后,确保后续操作使用该密钥。重置SSH代理缓存
若SSH代理缓存了旧密钥,执行以下命令清空缓存并重新添加有效密钥:ssh-add -D ssh-add ~/.ssh/你的有效密钥文件名完成后再尝试克隆或操作目标仓库。
检查仓库的部署密钥
登录GitHub进入目标仓库的Settings > Deploy keys,查看是否存在部署密钥:- 如果有部署密钥,确认本地是否持有对应私钥,若私钥丢失或失效,直接删除该部署密钥
- 若需要部署密钥,添加当前有效的公钥作为部署密钥,并勾选
Allow write access(如果需要推送权限)
确认仓库远程地址正确性
若本地已有该仓库目录,执行git remote -v检查SSH远程地址是否为git@github.com:[你的用户名]/[仓库名].git,确保仓库名拼写无误。
内容的提问来源于stack exchange,提问作者Justin Blayney
相关产品推荐
相关产品推荐

