Git错误:“请确保您拥有正确的访问权限并且存储库存在”

问题描述 投票:53回答:16

我在Windows上使用TortoiseGit。当我尝试从标准Windows资源管理器的上下文菜单克隆时,我收到此错误:

请确保您具有正确的访问权限并且存储库存在

更确切地说,终端的快照如下:

git.exe clone --progress -v“git @ arobotdev:\ git \ AlfaRobot.git”“C:\ Work \ AlfaRobot” 克隆到'C:\ Work \ AlfaRobot'...... 许可被拒绝,请再试一次。 许可被拒绝,请再试一次。 权限被拒绝(公钥,密码)。 致命:无法从远程存储库读取。 请确保您拥有正确的访问权限 并且存储库存在。 git没有干净地退出(退出代码128)(21450 ms @ 19.09.2014 10:36:58)

我该怎么做才能让git正常工作?

git github tortoisegit
16个回答
52
投票

您的git网址可能已更改。使用以下命令更改本地目录中的URL

git remote set-url origin git@yourGitUrlHere

1
投票
  1. 您可能想要确认的第一件事是互联网连接。但是,互联网问题主要是说无法访问回购。
  2. 确保在本地和github上都设置了ssh。见how
  3. 确保您使用的是ssh git遥控器。如果您克隆了https,只需将URL设置为ssh url,使用此git命令git remote set-url origin [email protected]:your-username/your-repo-name.git
  4. 如果您已正确设置ssh但它刚停止工作,请执行以下操作: eval "$(ssh-agent -s)" ssh-add 如果您仍然遇到此问题,请检查以确保您没有从github中删除ssh。在从github删除ssh的情况下,您可以将其添加回来。使用pbcopy < ~/.ssh/id_rsa.pub复制ssh密钥,然后转到github ssh设置并添加它。

我会建议你总是使用ssh。对于我曾经使用过的大多数团队,除了使用ssh之外,你无法访问repo(主要是私有的)。对于初学者来说,它可能看起来更难,但后来你会发现它更容易和更安全。


0
投票

另一个问题可能是您的互联网连接。也许明显,但花了我几分钟才弄明白我的wifi已经下降了:)


0
投票

像其他答案一样,使用https而不是ssh是解决方案。

我发布一个答案,给出一个可能的解决方案的具体例子。当我使用此命令行将远程URL更改为HTTPS时,我用bitbucket解决了这个问题:

git remote set-url origin <bitbucket_URL>

之后,我可以使用以下命令将内容推送到存储库:

git push -u origin --all

然后我也可以使用Sourcetree


0
投票

奇怪的是,我只在我的许多回购中收到了这个错误。

我的问题是在安装了新的GitHub Desktop for Windows之后,之前的旧GitHub for Win保留了~/.ssh/github_rsa~/.ssh/github_rsa.pub中的密钥,因为新的GitHub for Win期望它在~/.ssh/id_rsa中,所以解决方案只是重命名现有的私钥和公钥:

~/.ssh/github_rsa -> ~/.ssh/id_rsa
~/.ssh/github_rsa.pub -> ~/.ssh/id_rsa.pub

之后让我再次访问回购没有问题。


0
投票

如果您通过VPN连接到git存储库,也会发生这种情况。确保已连接到用于访问组织资源的VPN。


0
投票

使用您的https来源而不是ssh网址

例:

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

0
投票

我有这个问题,我发现我的系统有错误的DNS地址。验证您的网络并进行测试

ssh -vvv [email protected]

并阅读输出消息。如果您看到“您可以使用git或hg连接到Bitbucket”。 , 一切都好。


0
投票

我正在使用Ubuntu

在阅读了很多答案之后,即使我已经将SSH密钥添加到我的git帐户,并尝试使用ssh -T [email protected]测试它并且它说Welcome <my username>,它们都没有解决问题,但它仍然告诉我没有访问权限。然后我发现原因是:

通常,如果你不是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 <your repository in SSH>。它将显示它查找SSH密钥的位置。

所以我建议的解决方案是:

重新创建你的SSH密钥(按照这个instruction),但在第一步运行sudo su,那么你应该没事。


0
投票

我在将项目上传到gitlab时遇到了这个错误。我没有从git克隆,而是上传项目。要将代码推送到gitlab,您可以使用ssh或https两种方式。如果您使用https,则必须输入gitlab帐户的用户名和密码。为了将代码推送到git,您可以使用以下代码。

第一次推送到Git

>$ cd
>$ mkdir .ssh;cd .ssh
>$ ssh-keygen -o -t rsa -b 4096 -C "[email protected]"

-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 [email protected]:Account_User_Name/Your_project_Name.git master

- set-upstream:告诉git到源的路径。如果Git之前推动了您当前的分支,它将记住原点

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


0
投票

添加ssh键对我有用。您可以在mac上使用ssh-keygen命令创建ssh密钥。您应该能够在YourRepository> Settings上看到Deploy keys菜单,不要忘记选中Allow write access选项。

deploy keys menu screenshot


41
投票

这个问题可能与您的ssh-agent有关,您的ssh密钥尚未添加ssh-agent。您必须使用终端应用以下步骤: -

  1. $ eval“$(ssh-agent -s)” 特工pid 5867
  2. $ ssh-add 输入/home/you/.ssh/id_rsa的密码:[]已添加身份:/home/you/.ssh/id_rsa(/home/you/.ssh/id_rsa)

然后它会起作用。


25
投票

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

$ cat ~/.ssh/id_rsa.pub

这是您的SSH密钥。将其添加到存储库中的SSH密钥。 在gitlab中去

配置文件设置 - > SSH密钥

并添加密钥


19
投票

在从GIT获取克隆时尝试使用HTTPS代替SSH,使用此Url进行克隆,您可以使用Gitbase,Android Studio或任何其他工具来克隆分支。 enter image description here


7
投票

您正尝试通过ssh:git@arobotdev...克隆存储库,并且未在服务器上正确设置SSH密钥。这有多种原因:

  1. 您的公钥可能未保存在用户git的authorized_keys文件中
  2. 如果1不为真,则您的私钥不会保存在您的HOMEDIR的.ssh /文件夹中。
  3. 权限未正确设置

如果以上所有3都是不真实的,那么我唯一的结论就是尝试:git@arobotdev:AlfaRobot.git假设AlfaRobot.git在git用户的HOMEDIR中,而不在名为git的文件夹中,该文件夹位于用户git的HOMEDIR中。


5
投票

rsa.pub(即生成的公钥)需要在github >> settings >> ssh keys页面上添加。检查一下,您尚未在repository-settings >>部署密钥中添加此公钥。如果是这样,请从此处删除条目并添加到提到的第一个位置。

detail中设置pub-private键。

它会起作用!


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
投票

将这些行添加到您的.get/config文件中(感谢@kovshenin回答Git Pull: Change Authentication):

[credential]
    helper = wincred

2
投票

尝试https而不是ssh。从项目主页中选择https选项,从中复制克隆URL。

© www.soinside.com 2019 - 2024. All rights reserved.