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个回答

9

我正在使用Ubuntu。

阅读了很多答案后,它们都不能解决我的问题,即使我已经将SSH密钥添加到我的git账户中,并尝试使用ssh -T git@gitlab.com 进行测试,它说“Welcome <我的用户名>”,但它仍然告诉我我没有访问权限。然后我找到了原因:

通常,如果你不是root用户,在每个git命令前都需要用sudo运行。

当运行sudo git clone <SSH....>(例如)时,它将在root权限下执行,但是当我以普通用户身份创建SSH密钥并将其保存在~/.ssh/id_rsa 中时,它解析的是绝对路径/home/username/.ssh/id_rsa。当执行sudo git clone ... 时,它会在/root/.ssh/id_rsa 中查找SSH密钥。

为什么我可以确定这一点。要查看git在哪里查找你的SSH密钥,请运行此命令:sudo GIT_TRACE=1 GIT_SSH_COMMAND="ssh -vvv" git clone <你的SSH存储库>。它会向你显示它在哪里查找你的SSH密钥。

因此,我建议的解决方案是:

重新创建你的SSH密钥(按照这个指示),但在第一步时运行sudo su,然后你就应该没问题了。


这个绝对救了我。 - Tim
1
唯一的解决方案是,在谈论sudo git clone时搜索/root/.ssh文件夹中的SSH密钥。这确实是我的问题。谢谢! - p_duthoit
这正是我所遇到的问题,而这个解决方案对我起作用了,谢谢。 - Jamal Hassouni

6
  1. 首先要确认的是网络连接是否正常。虽然,网络问题通常会提示无法访问仓库。

  2. 确保你已经在本地和Github上都设置了SSH。请参考这里

  3. 确保你正在使用SSH Git远程连接。如果你之前克隆的是HTTPS,只需使用以下Git命令将URL设置为SSH URL:git remote set-url origin git@github.com:your-username/your-repo-name.git

  4. 如果你已经正确设置了SSH但它突然停止工作,请执行以下操作:

    • eval "$(ssh-agent -s)"
    • ssh-add

    如果你仍然遇到问题,请检查确保你没有删除Github上的SSH。如果SSH已经被删除,你可以将其重新添加。使用 pbcopy < ~/.ssh/id_rsa.pub 复制SSH密钥,然后进入Github的SSH设置并添加它。

我建议你始终使用SSH。对于我合作过的大多数团队来说,除非你使用SSH,否则无法访问仓库(大多数仓库都是私有的)。对于初学者来说,这可能会比较困难,但后来你会发现它更加容易和安全。


5
需要在github的设置页面添加生成的rsa.pub(即公钥)。请检查您是否将此公钥添加到了存储库设置-部署密钥中。如果是,请从此处删除该条目并添加到第一个提到的位置。
有关pub-private密钥设置的详细信息,请参阅链接:https://help.github.com/articles/generating-ssh-keys/
这样就可以正常工作了!

5

错误配置~/.ssh/config文件可能会引发此错误。

GitHub的测试命令基本上为我提供了解决方案:

ssh -T git@github.com

/Users/myUser/.ssh/config: line 13: 配置选项错误: something-that-did-not-make-sense


1
给你啤酒,我的朋友。已保存。 - Praveen

3

请将以下内容添加到您的.get/config文件中(感谢 @kovshenin 的回答Git Pull:更改身份验证):

[credential]
    helper = wincred

或者~/.gitconfig - Marcos

3

我只是按照这里的解释进行了操作。

输入图像描述

我尝试使用eval,它可以工作。

然后我尝试ssh -T git@bitbucket.org。

然后我再次进行克隆。现在一切运行顺畅。


1
可以加个链接吗?我对被裁剪掉的部分很感兴趣。非常感谢! - till Kadabra
2
在这里。https://support.atlassian.com/bitbucket-cloud/docs/set-up-an-ssh-key/ - Apit John Ismail

3

如果你是通过 VPN 连接到 Git 仓库,也会出现这种情况。 确保你连接的是用于访问组织资源的 VPN。


3
在将项目上传到GitLab时,我遇到了这个错误。我没有从Git上克隆,而是上传了整个项目。要将代码推送到GitLab,有两种方式:使用SSH或HTTPs。如果您选择HTTPs,您需要输入GitLab帐户的用户名和密码。以下是将代码推送到git的方法。
第一次推送到Git
>$ cd
>$ mkdir .ssh;cd .ssh
>$ ssh-keygen -o -t rsa -b 4096 -C "email@example.com"

-C参数是可选的,它提供了一个注释,以便在您有多个密钥时区分它们。 这将创建id_rsa(您的私钥)和id_rsa.pub(您的公钥)。 我们传递我们的公钥并保留我们的私钥 - 嗯,私有的。 Gitlab的用户设置是您将 添加您的公钥到您的帐户,从而最终允许我们推送的地方。 在您的项目位置(目录)使用以下命令。
git init

将当前目录转换为Git仓库。这会在当前目录中添加一个.git子目录,并使其能够开始记录项目的修订。
使用https路径推送。
git push --set-upstream https://gitlab.com/Account_User_Name/Your_Project_Name.git master

使用 SSH 路径推送

git push --set-upstream git@gitlab.com:Account_User_Name/Your_project_Name.git master

— set-upstream: 告诉 Git origin 的路径。如果 Git 先前已经在当前分支上进行过推送,它将记住 origin 的位置。

master: 这是我想要在初始化时推送到的分支名称。


2
这是我解决这个问题的方法。我在Win7/10上使用Babun(mintty.exe)。当我尝试了许多上面提到的解决方案,但都不起作用时,我意识到可能是我使用了错误的ssh代理...... 所以我运行echo $GIT_SSH来查找,它显示了Plink.exe的路径。 我实际期望的是OpenSSH。
因此,我将以下一行添加到~/.zshrc文件中:

注意1:您也可以直接在babun中执行
注意2:如果您使用bash,则配置文件为.bashrc

export GIT_SSH=$(which ssh)

并且它起作用了!


2

使用https源地址而非ssh url

例如:

git remote add origin  https://gitlab.com/user/folder.git

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