Git错误:"请确保您拥有正确的访问权限并且仓库存在"。

333
我正在Windows上使用TortoiseGit。当我尝试从标准的Windows Explorer上下文菜单中进行克隆时,会出现以下错误提示:
请确保您具有正确的访问权限并且存储库存在。
更具体地说,在终端中的快照如下:
git.exe clone --progress -v "git@arobotdev:\git\AlfaRobot.git" "C:\Work\AlfaRobot"
Cloning into 'C:\Work\AlfaRobot'... Permission denied, please try again. Permission denied, please try again. Permission denied (publickey,password). fatal: Could not read from remote repository.
请确保您具有正确的访问权限和存储库存在。
请问我应该怎么做才能使git正常工作?

1
尝试生成SSH密钥并添加。 - Raja Simon
使用Shell(或Windows中的Git Bash)创建SSH密钥:$ ssh-keygen -t rsa -C“youremail@example.com” - Belter
在将仓库更改为git@github.com地址以避免每次输入密码后,出现了该错误。导致这个错误的真正原因是忘记在github上添加我的公钥。 - dasWesen
在我的情况下,我需要按照此处设置配置。 - Hadi KAR
35个回答

250

你的 Git URL 可能已经发生了变化。请使用以下命令在本地目录中更改 URL:

对于 https 协议:

git remote set-url origin https://github.com/username/repository.git

对于ssh协议

git remote set-url origin git@github.com:username/repository.git

问题可能有多个原因:

  1. 如果问题与您的ssh身份有关,请参见{{link1:此处onkar-m18的答案}}
  2. 如果ssh密钥未添加到托管服务器,请参见{{link2:此处lovekush-vishwakarma的答案}}

3
我犯了一个非常普遍的错误。我使用xclip -sel clip < ~/.ssh/id_rsa.pub 命令复制公钥,但在粘贴到 GitHub 密钥输入框时,我使用了退格键删除了最后一个换行符,这实际上改变了公钥。因此,始终要将 ssh 公钥复制粘贴完整,不要删除最后一个换行符。 - Amreesh Tyagi
1
它说没有这样的远程'origin'。 - Menaim
那个网站的URL是什么?@Vishnu? - Mahdi
出于好奇...为什么您会链接回答者的个人资料,而不是仅链接回答? - sancho.s ReinstateMonicaCellio
@sancho.sReinstateMonicaCellio,请查看@onkar-m18的答案 here。请点击HERE以获取答案。 - Vishnu
显示剩余2条评论

229

您可能与ssh-agent有关的问题,您的ssh密钥尚未添加到ssh-agent中。您需要使用终端应用以下步骤:

  1. $ eval "$(ssh-agent -s)"

    代理程序pid 5867

  2. $ ssh-add <private-ssh-key-file-name> //例如. id_rsa(不是.pub文件)

    为/home/you/.ssh/id_rsa输入密码: [] 已添加身份验证:/home/you/.ssh/id_rsa (/home/you/.ssh/id_rsa)


37
克隆时仍然出现错误:“致命错误:无法从远程存储库读取。” - IgorGanapolsky
4
谢谢,它对我有用。我已经创建了一个不同于默认id_rsa的密钥,所以只需要在上述命令中额外执行ssh-add -K ~/.ssh/id_rsa_other_project。 - Nitesh
1
是的,这根本解决不了任何问题。将您的身份添加到ssh中只能防止每次询问您的证书密码。 - DMcCallum83
1
只是运行 eval "$(ssh-agent -s)" 可以解决我的问题... 但只是暂时的。我应该把它添加到打开 shell 时运行的命令中吗? - Francesco Dondi
1
这并不能解决问题,你需要每次重新启动shell时运行命令。 - L H
显示剩余6条评论

84

如果之前工作正常,但突然停止工作:

这个问题可能是由于有时 ssh-agent 在重新启动后不是持久的。您应该检查 ssh-agent 是否已添加您的密钥:

ssh-add -l -E md5

如果您的输出类似于:

The agent has no identities.

这意味着ssh-agent已经丢失了您的密钥。在这种情况下,您只需要再次添加身份验证密钥。类似于:

ssh-add ~/.ssh/git_rsa

错误现在应该消失了!


2
当我为另一个帐户创建了另一个ssh时,就发生了这种情况,所以我只需将缺失的git_rsa添加到列表中即可。 - Dan
谢谢 ssh-add -l -E md5 确实列出了 no identities,但我使用了已弃用的 ssh-add -A 命令来解决它一直提示没有身份验证的问题。现在有一种更新的方法,我认为是使用 --apple-use-keychain--apple-load-keychain 命令。 - jamylak

77

在从GIT中取克隆时,请尝试使用HTTPS而不是SSH,并使用此URL进行克隆。您可以使用Gitbase、Android Studio或任何其他工具来克隆分支。 输入图片描述


3
我认为这和报告的问题无关。 - Yrineu Rodrigues
哇,真是太棒了。为什么这个能工作而SSH不能呢? - Jan
谢谢@Jan抽出时间来。如果你有更好的解决方案,可以发表你的答案。如果我能帮到你,请随时联系我。 - Lovekush Vishwakarma
2
为什么这个毫无关联的回答会有58个赞,我真是不理解。 - Ducky
@Ducky,因为它适用于其他人,所以人们投票支持它,这已经超出了你的回答范围。 - Lovekush Vishwakarma
完全与问题无关。但是77人选择了https而不是ssh!太搞笑了! - sud007

56

对我来说,这是因为机器上没有SSH密钥。在本地检查SSH密钥:

$ cat ~/.ssh/id_rsa.pub

这是您的SSH密钥。将其添加到仓库中的SSH密钥中。
在 Gitlab 中打开

个人资料设置 -> SSH密钥

并添加密钥。


25
我已按照你提到的添加了密钥,但仍然收到拒绝访问的消息。请帮忙。 - Jet
我重新安装了操作系统,但我的文件还在。所以只需要生成SSH并添加到Github,问题就解决了。 - muhammad tayyab

44

Github现在使用一种url方案

git remote set-url origin https://github.com/username/repository.git


2
“fatal: No such remote 'origin'”。 我在Github上有一个存储库,并使用“git init”在我的计算机上启动了一个本地Git存储库。 - Jdeep
2
@NoahJ.Standerson,你需要使用 git remote add origin https://github.com/user/repo.git 命令在本地代码库中设置远程“origin” - 参见 https://docs.github.com/en/free-pro-team@latest/github/using-git/adding-a-remote。 - Deniz Genç
2
支持密码验证已于2021年8月13日取消。 更多信息请参见https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/。 - Andre DiCioccio

30
运行以下命令:
open ~/.ssh

然后手动删除 "known_hosts" 文件。

  1. 运行以下命令,生成新的 ssh-key。
ssh-keygen -t rsa -C "your@email.com"

然后会在 .ssh 目录下生成两个文件: id_rsa 和 id_rsa.pub ,将 id_rsa.pub 的内容复制

  1. 登录 Github --> 设置 --> SSH and GPC keys --> 添加 SSH keys --> 将复制的内容粘贴到 key 中

  2. 运行以下命令

ssh -T git@github.com

好的,它可以工作


1
运行得非常好! - kiwicomb123
谢谢!它运行良好。 - Mayank Dudakiya
1
“tow files” 是什么意思? - NickW
@NickW 我认为HaitoLiu的意思是“二”。我已经编辑了答案。 - Sam Dutton
我怎么没看到那个。谢谢。 - NickW

26

如果您使用的是共享计算机,则使用自己的密码或无密码私钥可能过于复杂。更安全的选择是使用访问令牌:

  1. 转到 设置、开发者设置、个人访问令牌
  2. 生成新的令牌。
  3. 记录该令牌的用途。
  4. 授予repo访问权限。
  5. 克隆存储库:
$ git clone https://<token>@github.com/<user>/<repo>.git
如果您已经克隆了该存储库,您可以修改远程设置:
$ git remote set-url origin https://<token>@github.com/<user>/<repo>.git
$ git pull
Already up to date.

2
你真是个救命恩人!这对我来说是最简单的解决方案。 - Harold_Finch
2
非常感谢,我在一台需要 VPN 才能工作的机器上克隆 repo 遇到了问题,这是连接到 Github 的唯一方式。谢谢。 - palAlaa
2
这是在共享主机上为我工作的唯一方法。非常感谢! - terryeah

11

我曾经遇到过这个问题,并发现我的系统DNS地址设置错误。请检查您的网络并进行测试。

ssh -vvv git@bitbucket.org

并查看输出信息。如果您看到“您可以使用git或hg连接到Bitbucket。”,则表示一切正常。


1
你好 @Albert,我也遇到了相同的问题,但是针对 gitlab.com。你是如何解决这个问题的? - abiratsis
@AlexandrosBiratsis 我把我的 DNS 替换成了其他地址。尝试使用 OpenDNS 或 Google DNS。 - albert
1
我正在使用GitHub,所以这个问题已经解决了: ssh -vvv git@github.com在删除known_hosts文件后出现了这个问题。 - codetinker

11
您正在尝试通过ssh克隆存储库:git@arobotdev...,但服务器上未正确设置您的SSH密钥。这可能有多种原因:
  1. 您的公钥可能未保存在用户git的authorized_keys文件中
  2. 如果1不成立,则您的私钥未保存在HOMEDIR的.ssh /文件夹中。
  3. 权限设置不正确

如果上述三个条件都不成立,那么我的结论只能是尝试: git@arobotdev:AlfaRobot.git 假设AlfaRobot.git位于git用户的HOMEDIR中,而不是位于名为git的文件夹内,该文件夹位于用户git的HOMEDIR中。


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