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


97

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

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

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

git.exe clone --progress -v“ git @ arobotdev:\ git \ AlfaRobot.git”“ C:\ Work \ AlfaRobot”

克隆到'C:\ Work \ AlfaRobot'...
权限被拒绝,请重试。
权限被拒绝,请重试。
权限被拒绝(公钥,密码)。
致命:无法从远程存储库读取。

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

git没有干净退出(退出代码128)(21450毫秒@ 19.09.2014 10:36:58)

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


1
尝试生成ssh keygen并添加
Raja Simon

使用Shell(或Windows中的Git Bash)创建SSH密钥:$ ssh-keygen -t rsa -C "youremail@example.com"
Belter

将存储库更改为git@github.com地址后出现此错误,因为不必一直输入密码。导致它的真正错误是忘记在github上添加我的公共密钥。
dasWesen

Answers:


76

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

git remote set-url origin git@yourGitUrlHere

17
仅供参考,github现在使用网址方案:git remote set-url origin https://github.com/username/repository.git
RyPope

2
@RyPope您可以使用任何协议git(ssh)或https,这是您的愿望。github现在既有协议git又有https
Vishnu

@Vishnu是什么XXXXXXX
244boy17年

@RyPope转换为答案
ishandutta2007'9

我犯了一个非常普遍的错误。我使用clip命令复制了内容xclip -sel clip < ~/.ssh/id_rsa.pub,但是在粘贴到github键输入框中的过程中,我使用退格键删除了最后一个换行符,这实际上更改了公钥。因此,请始终按原样复制并粘贴ssh公钥,而不删除最后一个换行符。
Amreesh Tyagi

62

这个问题可能是您的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)

那么它将起作用..欢呼J.


11
克隆时仍出现错误:fatal: Could not read from remote repository.
IgorGanapolsky '16

谢谢我的帮助,我创建了与默认id_rsa不同的密钥,因此只需在上述命令ssh-add -K〜/ .ssh / id_rsa_other_project中另外做即可。
Nitesh

是的,这根本解决不了任何问题。将您的身份添加到ssh只会停止每次都要求您输入证书密码的事情
DMcCallum83 '18

干杯。我没跑过brew update。当我ssh-add在运行命令之前运行时,它起作用了。希望我没有一直重复这个过程。
nyxee

仍然出现错误“主机密钥验证失败。致命:无法从远程存储库读取。” :但加入已知主机固定为我stackoverflow.com/questions/15214977/...
rickvian

36

从GIT进行克隆时,尝试使用HTTPS代替SSH,使用此URL进行克隆,您可以使用Gitbase,Android Studio或任何其他工具来克隆分支。 在此处输入图片说明


35

对我而言,这是因为计算机上没有SSH密钥。在本地检查SSH密钥:

$ cat ~/.ssh/id_rsa.pub

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

配置文件设置-> SSH密钥

并添加密钥


7
我已经添加了您提到的密钥,但仍然收到拒绝访问的消息。请帮忙
Jet Jet

18

Github现在使用url方案

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


9

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

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

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


5

rsa.pub(即生成的公共密钥)需要添加到github >> settings >> ssh keys页面上。检查是否没有在存储库设置>>部署密钥中添加此公钥。如果是这样,请从此处删除条目,然后添加到提到的第一个位置。

在酒吧里,私有密钥的设置细节

因此它将起作用!


3
  1. 您可能要确认的第一件事是互联网连接。不过,互联网问题大多会说无法访问该存储库。

  2. 确保已在本地和github上都设置了ssh。看如何

  3. 确保您正在使用ssh git remote。如果您已经克隆了https,只需使用此git命令将url设置为ssh urlgit remote set-url origin git@github.com:your-username/your-repo-name.git

  4. 如果您已经正确设置了ssh,但是它刚刚停止工作,请执行以下操作:

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

    如果问题仍然存在,请检查并确保尚未从github中删除ssh。如果ssh已从github中删除,则可以将其重新添加。使用pbcopy < ~/.ssh/id_rsa.pub复制ssh密钥,然后转到github ssh设置并添加它。

我建议您始终使用ssh。对于与我合作过的大多数团队,除非您使用ssh,否则您将无法访问该存储库(大部分为私有存储库)。对于初学者来说,它似乎更难一些,但是以后您会发现它相当容易并且更加安全。


3

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

ssh -vvv git@bitbucket.org

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


您好@Albert,除了gitlab.com,我也面临同样的问题。您如何设法解决该问题?
abiratsis

@AlexandrosBiratsis我用其他地址替换了我的dns。尝试使用opendns或google dns。
艾伯特

2

另一个问题可能是您的互联网连接。也许很明显,但是花了我几分钟才弄清楚我的wifi掉了:)


1
根据错误消息,看来互联网连接不是这里的问题。
jbmusso

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

如果它之前曾经工作过并且突然停止工作:

由于有时ssh-agent在重新启动后并非持久存在,可能导致此问题。您应该检查是否ssh-agent添加了密钥:

ssh-add -l -E md5

如果您得到如下输出:

The agent has no identities.

这意味着ssh-agent您丢失了钥匙。在这种情况下,您只需要再次添加身份密钥。就像是:

ssh-add ~/.ssh/git_rsa

该错误现在应该消失了!


当我为其他帐户创建另一个ssh时,这发生在我身上,所以我只将缺失的内容添加git_rsa到列表中
John

1

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


1

将项目上传到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原始路径。如果Git先前已推送您当前的分支,它将记住原点在哪里

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


0

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

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

git remote set-url origin <bitbucket_URL>

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

git push -u origin --all

然后我也可以使用Sourcetree


0

奇怪的是,我仅在我的许多存储库中的1个中收到此错误。

我的问题是在安装了适用于Windows的新GitHub Desktop之后,以前的旧版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

使用您的https来源而不是ssh url

例:

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

0

我正在使用Ubuntu

阅读许多答案后,即使我已经将SSH密钥添加到我的git帐户中,并尝试使用ssh -T git@gitlab.com并说来测试它,也没有一个可以解决问题Welcome <my username>,但是它仍然告诉我没有访问权限。然后我发现原因是:

通常,如果您不是root用户,它将要求您sudo为每个git命令运行。

运行时sudo git clone <SSH....>(例如)。它将在root获得许可的情况下执行,但是在偶然创建SSH密钥时,我以普通用户身份运行该密钥并将其保存在其中~/.ssh/id_rsa,它可以解析绝对路径/home/username/.ssh/id_rsa。并且在执行时sudo git clone ...会寻找SSH密钥/root/.ssh/id_rsa

为什么我可以确定这一点。查看git在哪里寻找您的SSH密钥。运行此命令:sudo GIT_TRACE=1 GIT_SSH_COMMAND="ssh -vvv" git clone <your repository in SSH>。它会告诉您寻找SSH密钥的位置。

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

重新创建SSH密钥(按照此说明进行操作),但首先要运行它sudo su,然后就可以了。


0

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

部署按键菜单屏幕截图


0

我犯了一个非常普遍的错误。我使用clip命令复制了内容xclip -sel clip < ~/.ssh/id_rsa.pub,但是在粘贴到github键输入框中的过程中,我使用退格键删除了最后一个换行符,这实际上更改了公钥。

因此,请始终按原样复制并粘贴ssh公钥,而不删除最后一个换行符。


0

对我来说,在断开正常工作后,我遇到了公司VPN的问题。

使用命令检查与github的连接 ssh -vvvT git@github.com


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.