【问题标题】:Git error: "Please make sure you have the correct access rights and the repository exists"Git错误:“请确保您具有正确的访问权限并且存储库存在”
【发布时间】: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一样设置配置

标签: git github tortoisegit


【解决方案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

问题可能有多种原因

  1. 如果问题与您的 ssh 身份有关,请通过 @onkar-m18 回答 here
  2. 如果托管服务器没有添加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。您必须使用终端应用以下步骤:-

  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)

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

【讨论】:

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

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

  1. 转到Settings, Developer Settings, Personal access tokens
  2. 生成新令牌。
  3. 注意令牌的用途。
  4. 授予repo访问权限。
  5. 克隆 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.

【讨论】:

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

您正在尝试通过 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 中。

【讨论】:

    【解决方案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】:
    1. 在命令下运行
    open ~/.ssh
    

    然后手动删除“known_hosts”文件

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

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

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

    2. 在命令下运行

    ssh -T git@github.com
    

    好的,可以了

    【讨论】:

    • 像魅力一样工作!
    • 谢谢!它运作良好
    【解决方案12】:
    1. 您可能要确认的第一件事是互联网连接。不过,互联网问题大多会说无法访问 repo。

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

    3. 确保您使用的是 ssh git 远程。如果你已经克隆了 https,只需将 url 设置为 ssh url,使用这个 git 命令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 已从 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】:

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

              【讨论】:

                【解决方案19】:

                使用你的 https 源而不是 ssh url

                示例:

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

                【讨论】:

                  【解决方案20】:

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

                  使用命令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】:

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

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

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

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

                      4. 评估ssh-agent -s

                      5. ssh-add ~/.ssh/id_ed25519

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

                      7. 猫~/.ssh/id_ed25519.pub

                      8. 导航到 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

                                【讨论】:

                                  猜你喜欢
                                  • 2018-08-05
                                  • 2013-07-15
                                  • 2018-07-05
                                  • 2015-07-16
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 2021-04-18
                                  • 1970-01-01
                                  • 2021-12-07
                                  相关资源
                                  最近更新 更多