Git: 致命错误:无法从远程仓库读取。请确保您拥有正确的访问权限并且该仓库存在。

121
我遇到了这个错误 -
D:\Projects\wamp\www\REPO [master]> git pull origin master
Warning: Permanently added 'github.com,192.30.252.128' (RSA) to the list of known hosts.
ERROR: Repository not found.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

git remote -v 的输出结果

D:\Projects\wamp\www\REPO [master]> git remote -v
origin  git@github.com:username/repo.git (fetch)
origin  git@github.com:username/repo.git (push)

ssh -Tv git@github.com 命令的最终消息 -

Hi [My Username]! You've successfully authenticated, but GitHub does not provide shell access.

我该如何解决这个问题?


2
您应该验证您是否仍然可以克隆存储库。如果您甚至无法进行克隆,则需要检查您的身份验证令牌。 - merlin2011
5
ssh -Tv git@github.com 能够运行吗? - VonC
你的分支实际上是用户名/存储库.git还是实际的用户名和存储库名称? - Steve Chaloner
然后先尝试修复这个问题:确保HOME已定义(在Windows上默认情况下未定义):https://help.github.com/articles/generating-ssh-keys/#platform-windows - VonC
@Napster,所以它能工作吗?之前你说“不行”,是吗? - VonC
显示剩余8条评论
25个回答

120

为你的远程“origin”更改SSH URL为HTTP URL,请使用:

```git
```
> git remote set-url origin https://github.com/<user_name>/<repo_name>.git

在 git push 时,它会要求您输入 GitHub 密码。


12
我刚刚尝试了一下,但出现了错误:“致命错误:没有名为'origin'的远程仓库”。 - Rich
1
我不知道它是做什么的,但它起作用了,我可以继续我的生活了!谢谢 - Kostas Demiris
3
origin是远程名称。如果你的远程名称不是origin,那么仅仅复制粘贴这段代码是行不通的。请将origin替换成你的远程名称。 - Zoe stands with Ukraine
7
顺便提一下,截至2021年8月13日,这个解决方案将无法使用,因为Github已经废除了在所有身份验证操作中使用密码的功能。 - StonedTensor
1
2021年8月13日,密码认证支持已被移除。请使用个人访问令牌替代。 - Ehsan
显示剩余4条评论

34

对我而言,我之所以出现这个错误是因为我的ssh代理未能运行。采取以下措施即可解决:

eval `ssh-agent -s`
ssh-add path_to_your_key

不确定为什么,但这个工作。 - BabyishTank
我的ssh代理正在运行并显示所有所需的密钥,但仍然会出现此错误。在我重新启动我的机器之后,它不再显示添加的ssh密钥。在添加了新的密钥之后,推送功能又恢复正常了。 - Artur Müller Romanov
我的ssh代理正在运行并显示所有所需的密钥,但仍然会出现此错误。在我重新启动我的机器后,它不再显示添加的ssh密钥。在添加了新的密钥之后,推送功能又恢复正常了。 - undefined

33

我问在讨论中

ssh -T git@github.com输出的用户名(in Hi [My Username]!)是否与您存储库的ssh url(git@github.com:username/repo.git)中使用的用户名相同?

抱歉,它没有显示相同的名称。

这意味着凭据已经发生了变化。

一个解决方案是至少将%HOME%\.ssh\id_rsa.pub复制到正确的GitHub帐户的SSH密钥部分

OP补充道:

我正在处理私有存储库。 所以在git@github.com:username/repo.git中,

我回答道:

如果您能够克隆/推送到那个用户名不是您自己的GitHub账户的仓库,那么这一定是因为该仓库的所有者将您以前的公共ssh密钥添加为该仓库的贡献者。接下来需要做的是询问同一仓库所有者将您当前的公共ssh密钥%HOME%\.ssh\id_rsa.pub添加到仓库的贡献者列表中。所以请与所有者确认您(即您的公共ssh密钥)已被声明为贡献者。

16

1
我按照您的建议添加了身份验证和上述 URL 中列出的所有步骤,但是在执行 git push 时仍然存在问题;我使用 git clone、git fetch 或 git pull 没有问题;但是当我执行 git push origin master 时,提示如下:fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.``` - soMuchToLearnAndShare
1
以下链接可能有帮助:https://dev59.com/RFMI5IYBdhLWcg3wLYfE?rq=1 - soMuchToLearnAndShare

11

我也遇到了这个错误,原始存储库的创建者已经离开了公司,这意味着他们的github团队账户被删除。

git remote set-url origin https://github.com/<user_name>/<repo_name>.git

然后您需要执行git pull origin develop或任何其他git命令,它会提示您进行登录并像平常一样继续执行。


2
在我的情况下,我与某人共享了我的<user_name> - 他们必须在git路径上设置他们的<user_name>才能使push工作,之前pull是可以工作的,因为我将他们的SSH放在只读SSH密钥部分。这让我感到非常困惑,但最终这个方法终于奏效了!:D - Grant

9

这个错误可能是因为您的本地计算机上没有SSH密钥。请在本地检查SSH密钥:

$ cat ~/.ssh/id_rsa.pub

如果上述命令没有输出,请使用以下命令创建ssh密钥(适用于Linux/Mac):

$ ssh-keygen 

现在再次运行cat ~/.ssh/id_rsa.pub,这是您的SSH密钥。将此密钥复制并添加到git上的SSH密钥中。 在gitlab/bitbucket中转到

profile settings -> SSH Keys -> add Key

并添加密钥

9

由于网络问题,有时候我会遇到这种情况。虽然我不完全理解问题所在,但是切换到不同的子网或使用VPN可以解决此问题。


这也是我的情况。我只是断开并重新连接到我的 WLAN。 - Guillermo
如果我可以投票超过一次,我会这样做。 实际上我的问题是在某个地方设置了DNS,导致我被阻止了。 - MohammadHossein Jamshidi
在这之前我一直在搜寻,不然的话我就要自己写答案了。我按照这里和那里列出的所有步骤都做了。冗长的 SSH 确实显示我的密钥成功到达了我在 Bitbucket 上的仓库,但是却失败并显示了 OP 的错误信息。我使用的操作系统是 OS X Monterey,最近进行了安全更新。我将此问题与此有关联。不用说,那只是个误导,我的办公室 Wifi 才是问题所在。尝试其他任何网络,git 远程命令都可以正常运行。 - joeljpa

8
ssh-add -D  # Delete all identities.
ssh-add ~/.ssh/your_key

编辑1
由于我得到了很多投票,我发现这种方法存在一些问题,那就是它将删除你的所有身份,所以当你尝试从其他存储库读取时,你可能会遇到相同的问题,并且你需要为每个项目再次执行此步骤...但这也可能不适用于你的项目。


3

尝试:

git config --global credential.helper cache

这个命令可以让git在一定时间内不再要求输入用户名和密码,但默认限制为15分钟。
git config --global credential.helper 'cache --timeout=3600'

这将把默认时限调整为1小时。


2
也许,就像我那愚蠢的情况一样,你可能会通过直接输入命令来创建ssh密钥。
ssh-keygen

因此,它是使用本地系统用户凭据创建的,因此它们不匹配,请使用以下完整命令并重新创建:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接