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

Posted

技术标签:

【中文标题】Git错误:“请确保您具有正确的访问权限并且存储库存在”【英文标题】:Git error: "Please make sure you have the correct access rights and the repository exists" 【发布时间】:2014-11-13 16:39:29 【问题描述】:

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

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

更准确地说,终端截图如下:

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

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

【问题讨论】:

尝试生成ssh keygen并添加 使用 Shell(或 Windows 中的 Git Bash)创建 SSH 密钥:$ ssh-keygen -t rsa -C "youremail@example.com" 在将存储库更改为 git@github.com 地址后出现该错误,因为不必一直输入密码。导致它的真正错误是忘记在 github 上添加我的公钥。 在我的情况下,我需要像here一样设置配置 【参考方案1】:

您的 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

问题可能有多种原因

    如果问题与您的 ssh 身份有关,请通过 @onkar-m18 回答 here 如果托管服务器没有添加ssh密钥,请通过@lovekush-vishwakarma回答here

【讨论】:

我犯了一个非常常见的错误。我使用剪辑命令xclip -sel clip < ~/.ssh/id_rsa.pub 进行了复制,但是在粘贴到 github 密钥输入框中时,我使用退格键删除了最后一个换行符,这实际上改变了公钥。因此,请始终按原样复制和粘贴 ssh 公钥,而不删除最后一个换行符。 它说 No such remote 'origin' @Menaim 您必须从 bitbucket/github 或任何其他提供商复制正确的 URL。 那里的网址是什么? @毗湿奴?【参考方案2】:

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

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

    代理 pid 5867

    $ 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)

那么它会起作用..cheers J.

【讨论】:

克隆时仍然报错:fatal: Could not read from remote repository. 感谢它为我工作我创建了与默认 id_rsa 不同的密钥,所以只需要在上面的命令 ssh-add -K ~/.ssh/id_rsa_other_project 中额外执行。 是的,这根本无法解决任何问题。将您的身份添加到 ssh 只会阻止每次都询问您的证书密码 干杯。我未能运行brew update。当我在运行命令之前运行ssh-add 时,它起作用了。希望我不要一直重复这个。 仍然收到错误“主机密钥验证失败。致命:无法从远程存储库读取。”但添加已知主机为我修复:***.com/questions/15214977/…【参考方案3】:

在从 GIT 进行克隆时尝试使用 HTTPS 而不是 SSH,使用此 Url 进行克隆,您可以使用 Gitbase、android Studio 或任何其他工具来克隆分支。

【讨论】:

我认为这与报告的问题无关.. 哇哇哇。为什么这会起作用而不是 SSH 呢? 感谢@Jan 的宝贵时间,如果您有更好的解决方案,可以发布您的答案,如果我可以帮助您,请联系。【参考方案4】:

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

$ cat ~/.ssh/id_rsa.pub

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

配置文件设置 -> SSH 密钥

并添加密钥

【讨论】:

我已经添加了您提到的密钥,但仍然收到拒绝访问消息。请帮忙【参考方案5】:

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

此问题可能是因为有时ssh-agent 在重新启动后不会持续存在。您应该检查ssh-agent 是否添加了您的密钥:

ssh-add -l -E md5

如果你得到如下输出:

The agent has no identities.

这意味着ssh-agent 丢失了您的密钥。在这种情况下,您只需再次添加身份密钥。比如:

ssh-add ~/.ssh/git_rsa

错误现在应该消失了!

【讨论】:

这发生在我为另一个帐户创建另一个 ssh 时,所以我只是将缺少的 git_rsa 添加到列表中 在更改 git ssh 密钥后,我一直在为 no repo found 错误苦苦挣扎 2 小时。这个命令解决了我的问题。 这完全救了我。我已经找了好几个小时了。 确实,这个问题是在 MacOS Catalina 重启后出现的。感谢您指出问题 +1 谢谢,这个解决方案可以帮助我丢失 GitHub SSH 凭据!【参考方案6】:

Github 现在使用 url 方案

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

【讨论】:

fatal: No such remote 'origin' 。我在 github 上有一个存储库,我在我的机器上使用 git init 启动了一个 git 本地存储库。 @NoahJ.Standerson 您必须使用git remote add origin https://github.com/user/repo.git 在本地存储库上设置远程“来源” - 请参阅docs.github.com/en/free-pro-team@latest/github/using-git/… 已于 2021 年 8 月 13 日移除对密码身份验证的支持。有关详细信息,请参阅 github.blog/…。【参考方案7】:

如果您在共享计算机上,使用您自己的密码或无密码私钥可能会有点过头了。更安全的选择是访问令牌:

    转到Settings, Developer Settings, Personal access tokens 生成新令牌。 注意令牌的用途。 授予repo访问权限。 克隆 repo:
$ git clone https://<token>@github.com/<user>/<repo>.git

如果你已经克隆了 repo,你可以修改你的远程设置:

$ git remote set-url origin https://<token>@github.com/<user>/<repo>.git
$ git pull
Already up to date.

【讨论】:

你是救生员!这对我来说是最简单的解决方案。 非常感谢,我遇到了在需要 *** 才能工作的机器中克隆 repo 的问题,这是连接到 github 的唯一方法。谢谢【参考方案8】:

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

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

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

【讨论】:

【参考方案9】:

我遇到了这个问题,我发现我的系统使用了错误的 dns 地址。验证您的网络并使用

进行测试
ssh -vvv git@bitbucket.org

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

【讨论】:

你好@Albert,我面临同样的问题,但对于 gitlab.com。你是如何解决这个问题的? @AlexandrosBiratsis 我用其他地址替换了我的 dns。试试 opendns 或 google dns。 im 使用 github,所以修复了:ssh -vvv git@github.com 这个问题在删除 known_hosts 文件后发生【参考方案10】:

我正在使用 Ubuntu

阅读了很多答案后,没有一个可以解决问题,即使我已经在我的 git 帐户中添加了 SSH 密钥,并尝试使用ssh -T git@gitlab.com 进行测试,它说Welcome &lt;my username&gt;,但它仍然一直告诉我我没有访问权限。然后我找到了原因:

通常,如果您不是root 用户,则需要您使用sudo 运行每个git 命令。

在运行sudo git clone &lt;SSH....&gt; 时(例如)。它将在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 &lt;your repository in SSH&gt;。它会告诉你它在哪里寻找你的 SSH 密钥。

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

重新创建您的 SSH 密钥(遵循此 instruction),但在第一步运行 sudo su,那么您应该会没事的。

【讨论】:

这完全救了我。 唯一的解决方案,谈论 sudo git clone 在/root/.ssh 文件夹中搜索 SSH 密钥。那确实是我的问题。谢谢!【参考方案11】:
    在命令下运行
open ~/.ssh

然后手动删除“known_hosts”文件

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

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

    登录 github --> 设置 --> SSH 和 GPC 密钥 --> 添加 SSH 密钥 --> 将复制的内容粘贴到密钥中

    在命令下运行

ssh -T git@github.com

好的,可以了

【讨论】:

像魅力一样工作! 谢谢!它运作良好【参考方案12】:

    您可能要确认的第一件事是互联网连接。不过,互联网问题大多会说无法访问 repo。

    确保您已在本地和 github 上设置 ssh。见how

    确保您使用的是 ssh git 远程。如果你已经克隆了 https,只需将 url 设置为 ssh url,使用这个 git 命令git remote set-url origin git@github.com:your-username/your-repo-name.git

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

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

    如果您仍然遇到问题,请检查以确保您没有从 github 中删除 ssh。如果 ssh 已从 github 中删除,您可以将其添加回来。使用 pbcopy &lt; ~/.ssh/id_rsa.pub 复制 ssh 密钥,然后转到您的 github ssh 设置并添加它。

我会建议您始终使用 ssh。对于我合作过的大多数团队,除了使用 ssh 之外,您无法访问存储库(大部分是私有的)。对于初学者来说,它可能看起来更难,但后来你会发现它更容易和更安全。

【讨论】:

【参考方案13】:

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

在detail 中设置公开私钥。

它会工作的!

【讨论】:

【参考方案14】:

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

[credential]
    helper = wincred

【讨论】:

或 ~/.gitconfig【参考方案15】:

我在将项目上传到 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 之前推送过你当前的分支,它会记住 origin 在哪里

ma​​ster:这是我在初始化时要推送到的分支的名称

【讨论】:

【参考方案16】:

这是我解决此问题的方法。我在 Win7/10 上使用 Babun(mintty.exe)。当我尝试了上面提到的许多解决方案时,它们都不起作用。我意识到也许我只是使用了错误的 ssh 代理...... 所以我运行echo $GIT_SSH 来查找,它显示了Plink.exe 的路径。 我真正期望的是 OpenSSH。

所以,我在~/.zshrc 文件中添加了以下一行

注意1:你也可以直接在babun中执行 注意2:如果你使用bash,那么配置文件是.bashrc

export GIT_SSH=$(which ssh)

而且它有效!

【讨论】:

【参考方案17】:

尝试使用 https 而不是 ssh。从您复制克隆 url 的项目主页中选择 https 选项。

【讨论】:

【参考方案18】:

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

【讨论】:

【参考方案19】:

使用你的 https 源而不是 ssh url

示例:

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

【讨论】:

【参考方案20】:

对我来说,在断开连接后我遇到了公司 *** 的问题。

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

【讨论】:

【参考方案21】:

类似问题:

当使用SSH URL 为 git 克隆 Git 时,我给了 passphrase。 所以这个错误现在出现了,每次我在Windows 10上打开VS Code

以下已解决问题:

1 .在CMD中运行以下命令

setx SSH_ASKPASS "C:\Program Files\Git\mingw64\libexec\git-core\git-gui--askpass"
setx DISPLAY needs-to-be-defined

2 。退出 CMD 和 VS 代码

3 .重新打开 VS 代码

4 。 VS Code 现在显示一个弹出对话框,我们可以在其中输入passpharse

以上命令适用于 Windows 操作系统,类似说明适用于 Linux/MAC。

【讨论】:

【参考方案22】:

您可以按照以下步骤操作-

    检查现有密钥- 一种。 ls -al ~/.ssh

    如果不存在则创建密钥- 粘贴下面的文本,替换为您的 GitHub 电子邮件地址。 一种。 ssh-keygen -t ed25519 -C "your_email@example.com" 湾。当系统提示您“输入要在其中保存密钥的文件”时,按 Enter。这接受默认文件位置。 C。在提示符处,键入安全密码。

    将您的 SSH 密钥添加到 ssh-agent- 启动 SSH 代理并添加密钥

    评估ssh-agent -s

    ssh-add ~/.ssh/id_ed25519

    将密钥添加到 Git 帐户- 拉起key并添加到Github账号

    猫~/.ssh/id_ed25519.pub

    导航到 Git 帐户并添加 SSH 密钥

【讨论】:

【参考方案23】:

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

我的问题是在安装新的 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

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

【讨论】:

【参考方案24】:

我犯了一个非常常见的错误。我使用clip命令xclip -sel clip &lt; ~/.ssh/id_rsa.pub复制,但是在粘贴到github密钥输入框中时,我使用退格删除了最后一个换行符,这实际上改变了公钥。

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

【讨论】:

【参考方案25】:

我的情况: 我使用 Windows 并且我有超过 1 个用户帐户。 我收到了同样的错误,解决方法是使用管理员权限启动 git bash。

【讨论】:

【参考方案26】:

对我来说,它给出了同样的错误:

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

快速解决方法是删除 ~/.ssh/config 文件

mv config config_old && touch config

eval "$(ssh-agent -s)"

git clone your_repo



As it turned out to be the config file that was corrupt and configured with two ids

【讨论】:

【参考方案27】:

如果使用 ubuntu/linux 试试这个:-

git config --global --unset credential.helper

现在通过以下步骤从 Github 帐户生成个人访问令牌:-

>>GITHUB ACCOUNT 
>> Developer setting 
>> Personal Access Token 
>>Genrate new one with all acess & use it as your password !!

窗口用户观看以下链接:-

https://www.youtube.com/watch?v=fkKkojKYZ8U

【讨论】:

对该视频的评论说“比堆栈溢出答案更好”。那么请帮助让 SO 再次获得更好的答案。始终在此处给出答案的基本部分是一种很好的做法。因此,如果您也想为 Windows 提供解决方案,请在此处提供。您仍然可以提供链接,但这些仅供参考。【参考方案28】:

进入你的 cmd 并运行:git config --global http.sslverify false

【讨论】:

以上是关于Git错误:“请确保您具有正确的访问权限并且存储库存在”的主要内容,如果未能解决你的问题,请参考以下文章

WSL+samba+git:“错误:将对象添加到存储库数据库.git/objects的权限不足” / git-clone / git-add 权限错误

Git使用中git pull出现错误

为啥 git 在错误的目录中查找 git 安装? (OS X)

git pull 上的 Git 错误(无法更新本地参考)

git 错误:

Git常出现的错误-443-503