【问题标题】:git: fatal: Could not read from remote repositorygit:致命:无法从远程存储库读取
【发布时间】:2012-11-10 15:36:42
【问题描述】:

我正在尝试使用 http://danielmiessler.com/study/git/#website 设置 git 来管理我的网站。

我已经到了说明的最后一步:git push website +master:refs/heads/master

我在 win7 中使用 git ming32 命令行工作

$ git push website +master:refs/heads/master
Bill@***.com's password:
Connection closed by 198.91.80.3
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

这里的一个问题可能是程序正在寻找 Bill@***.com。当我通过 ssh 连接到我的网站时,我有一个不同的用户名(比如说“abc”)。所以也许这应该是 abc@***.com。如果是这样,我不知道如何更改它,或者我是否可以使用别名进行推送

【问题讨论】:

  • 我遇到了同样的问题,有时当 git 服务器无法访问或出现“内部服务器错误”之类的情况时会发生此错误。
  • 首先请查看.git/config文件,看看一切正常。它对我来说有错误的 set-url 和 origin 值。
  • 你能告诉我 .git/config 和 .ssh/config 的正确顺序吗...因为我有点困惑。

标签: git


【解决方案1】:

您的 ssh 密钥很可能已从 ssh 代理中删除

ssh-add ~/.ssh/id_rsa

其中 id_rsa 是与 git repo 关联的 ssh 密钥

更新

您可能会收到Could not open a connection to your authentication agent. 错误来解决您需要先启动代理的问题:

eval `ssh-agent -s`

【讨论】:

  • 这对我有用!我花了很长时间尝试配置我的 ~/.ssh/config 文件以对不同的主机使用不同的密钥,以为这个文件是问题所在。最后,它一定是为正确的主机使​​用了正确的密钥,但该密钥已被“删除”。所以ssh-add ~/.ssh/theKeyInQuestion 让我重新启动并使用这个 repo 运行,不知道密钥被删除,或者“删除”甚至意味着什么,但至少我能够再次获得身份验证。即使在处理了数月的身份验证问题之后,SSH 对我来说仍然是一个谜。 ssh 代理问题是另外一件需要注意的事情!
  • 这为我解决了,我不明白为什么..它曾经工作过,突然不行,是否有一个从代理中删除密钥的过程,会不会发生意外?
  • 在 MacBook 中我使用 ssh-add -k ~/.ssh/id_rsa
  • 我收到了Could not open a connection to your authentication agent.
  • @DanDascalescu 尝试先使用eval `ssh-agent -s` 启动ssh-agent
【解决方案2】:

前段时间我也遇到过同样的问题……

我的 .git/config 有

url = git@github.com:manishnakar/polymer-demo.git

我把它换成了

url = https://github.com/manishnakar/polymer-demo.git 

它现在可以工作了:)

【讨论】:

  • 这怎么排名不高? git@github 完全不适合我
  • 如果 repo 所有者没有设置 ssh 密钥,那么您可能会遇到这个问题。所示的修复方法是改用https,或者让repo所有者设置ssh
  • @smileham 这会将与 repo 的远程链接从基于 ssh 的身份验证切换为 https 协议(如果需要,它将提示输入 usr/pwd)
  • 这是正确的答案,它对我立即起作用。
  • 这不是答案。它会更改您进行身份验证的协议。这不是 ssh 设置的解决方案,而是与您的 git repo 交谈的完全不同的方式
【解决方案3】:

您可以指定 SSH 应发送到远程系统的用户名作为远程 URL 的一部分。将用户名,后跟@,放在远程主机名之前。

git remote set-url website abc@***.com:path/to/repo

【讨论】:

  • ps,有没有办法添加密码,这样我就不用一直输入密码了?
  • 编辑带有远程url参数的文件.git/config
  • @user61629:我知道我迟到了,但你应该考虑使用私钥/公钥对而不是密码。
  • 哪个用户名?电脑用户名还是github用户名?
  • 对于 Github,您始终使用用户名 git。示例:git@github.com:mayoff/uiimage-from-animated-gif.git Github 通过查看您发送的 SSH 密钥来确定您的身份。
【解决方案4】:

确保.git/config 中的网址正确

url = git@github.com:username/repo.git

如果这是您的第一次推送,您需要设置正确的上游

$ git push -u origin master

您可以检查以下用户使用了哪个密钥:

$ ssh -vvv git@github.com

回复应包含以下内容:

debug1: Next authentication method: publickey
debug1: Offering RSA public key: ~/.ssh/id_rsa
...
You've successfully authenticated, but GitHub does not provide shell access.

还可以在~/.ssh/config 中定义 ssh 规则,例如基于别名:

   Host github
      HostName github.com 
      User git
      IdentityFile "~/.ssh/id_rsa"

   Host git
      HostName github.com 
      User git
      IdentityFile "~/.ssh/some_other_id"

您可以为每个别名设置连接到不同的端口,使用不同的用户名等。

【讨论】:

  • 谢谢!!在我克隆我的仓库时,url 被设置为https://github.com/user/repo.git(没有git@github.com),因此它拒绝使用我的 SSH 密钥。也许是因为我最初使用 GIthub for Windows 克隆了它(?)
  • 我不得不将 url = ssh://github.com/RaphaelBossek/dev-atlassian-jira-proman.git 更改为 url = ssh://git@github.com/RaphaelBossek/dev-atlassian-jira-proman.git 并且它再次起作用了
  • 该死的,你太棒了。我尝试了很多其他解决方案。我的网址也是 https: :(
  • -vvv 提示对我很有帮助。现在我看到它说“连接由 XXX.XXX.XXX.X 端口 22 关闭”。
  • 啊,DeployHQ 说“BitBucket 目前遇到轻微的服务问题。请查看他们的状态页面以获取更多信息。status.bitbucket.org”宾果游戏。
【解决方案5】:

尝试使用 unset GIT_SSH 删除 GIT_SSH 环境变量。这就是我的问题的原因。

【讨论】:

  • Works.. 我想知道我从哪里得到 GIT_SSH 环境变量 :)
  • 对于 windows 从高级选项菜单中删除 GIT_SSH 环境变量。为我工作。
  • 怎么样?我在终端上写什么来做到这一点?
  • 也为我解决了这个问题
  • 也为我修复了它。但是为什么这首先会导致问题呢?
【解决方案6】:

这通常是由于 SSH 密钥与远程不匹配造成的。

解决方案:

  1. 转到终端并键入以下命令(Mac、Linux)替换为您的电子邮件 ID。

    ssh-keygen -t rsa -C "you@email.com"

  2. 使用以下命令从 ssh 开始复制生成的密钥。

    猫~/.ssh/id_rsa.pub

  3. 将其粘贴到遥控器的 github、bitbucket 或 gitlab 中。
  4. 保存。

【讨论】:

    【解决方案7】:

    通过在终端上执行以下命令确保 ssh-agent 正在运行:

    eval $(ssh-agent -s)
    

    来源:Github documentation

    【讨论】:

    • 这也为我解决了一个问题。谢谢
    • 这也为我修复了它。我应该做些什么来确保它在未来运行?喜欢把它作为我的.zshrc 文件中的条目?
    • 这是为我做的
    【解决方案8】:

    我的 Bitbucket 的 ssh 私钥错误,而 ssh 代理中的私钥正确。

    先删除所有键

    ssh-add -D
    

    然后添加了正确的键。

    ssh-add ~/.ssh/id_rsa
    

    【讨论】:

    • 什么是 id_rsa ?
    • @S.M.FazleRabbi id_rsa 是您创建 ssh 密钥时密钥文件的默认名称
    【解决方案9】:

    我遇到了同样的问题。

    此错误表示您尚未指定您的代码将推送到的远程 URL 位置。

    您可以通过 2(主要)方式设置远程 URL:

    1. 通过在 Git Bash 上执行命令指定远程 URL。

      • 导航到您的项目目录

      • 打开 Git Bash

      • 执行命令:

        • git remote set-url origin <https://abc.xyz/USERNAME/REPOSITORY.git>
    2. 在配置文件中直接提及远程 URL

      • 导航到您的项目目录

      • 移动到 .git 文件夹

      • 在文本编辑器中打开 config 文件

      • 复制并粘贴到下面的行

        • [remote "origin"] url = https://abc.xyz/USERNAME/REPOSITORY.git fetch = +refs/heads/*:refs/remotes/origin/*

    有关更多详细信息,请访问link

    【讨论】:

      【解决方案10】:

      在做了一些研究之后,我终于找到了解决方案,你已经为 plink.exe 路径声明了一个环境变量。因此,如果您删除该路径,请重新打开 git bash 并尝试通过 SSH 进行克隆。

      参考这个链接

      http://sourceforge.net/p/forge/site-support/2959/#204c

      【讨论】:

        【解决方案11】:

        我有同样的错误。 解决方案如下: 我在.git/config 中更正了我的网址。 刚刚从 HTTPS 克隆 URL 复制了它。应该是这样的:

        url = https://github.com/*your*git*name*/*your*git*app*.git
        

        成功了。

        【讨论】:

        • 如果我在 windows os 下的配置文件上写了这个,错误出现的方式不同,它说... "/c/Users/asus/.ssh/config: line 5: Bad configuration option:网址”
        • 在 ssh 上使用 https 可以正常工作,它会询问用户名和密码
        • @Kiran,这不好。
        【解决方案12】:

        另一种解决方法:

        由于网络问题,有时我会遇到这种情况。我不完全理解根本问题,但是切换到不同的子网或使用 VPN 可以解决它

        【讨论】:

        • 正是我的情况。希望我读过这条评论。经过几个小时的调试,想到使用VPN,它成功了。
        • 对我来说,“再试一次”就行了。不知道打嗝是什么。
        【解决方案13】:

        如果在“git push origin master”命令之后你看到错误“无法从远程存储库读取”,那么试试这个

        1.ssh-keygen -t rsa -b 4096 -C "youremail"
        2.eval $(ssh-agent -s)
        3.ssh-add ~/.ssh/id_rsa
        4.clip < ~/.ssh/id_rsa.pub(it copies the ssh key that has got generated)
        5.then go to your remote repository on github and goto settings-> SSH and GPG keys ->new SSH key ->enter any title and paste the copied SSH key and save it
        6. now give git push origin master 
        

        【讨论】:

          【解决方案14】:

          在你的 .git/config 文件中

          [remote "YOUR_APP_NAME"]
              url = git@heroku.com:YOUR_APP_NAME.git
              fetch = +refs/heads/*:refs/remotes/YOUR_APP_NAME/*
          

          简单地说

          git push YOUR_APP_NAME master:master 
          

          【讨论】:

            【解决方案15】:

            如果您使用 Gitlab,则在尝试拉取或推送之前,您可能需要登录并接受 Gitlab 新条款。

            【讨论】:

            • 为什么投反对票?在同一天我解决了我的问题,它与新的 gitlab 术语有关。
            • 请删除您的反对票。这是一个有效的答案,它发生在 gitlab 条款更改之后。接受 gitlab 新条款可能会解决问题。
            【解决方案16】:

            2020 年 10 月更新

            在大多数情况下,当您有多个用户从同一个客户端系统访问同一个 git 服务器时,此时 git 服务器会与两个用户都允许的用户的访问密钥混淆,但是当您触发命令时,它会被使用默认用户。

            ssh -T git@gitlab.com
            

            查看您尝试与该用户一起推送哪个用户

            简单的解决方案是从 git 服务器中删除未使用的用户公钥。

            然后尝试 git fetch 或 pull,push 对我有用

            【讨论】:

              【解决方案17】:

              在我的例子中,我使用带有密码的 ssh 密钥来通过 github 进行身份验证。我没有在 Windows 中正确设置选美(仅在 cygwin 中)。缺少的步骤是将 git_ssh 环境变量指向 plink.exe。此外,您需要将 github.com 放入 plink known_hosts。

                 plink github.com
                 y
                 <then ctrl-c>
              

              希望这会有所帮助!

              我当然希望 intellij 能给我一个更有用的错误,或者更好的是让我输入 ssh 密钥密码。

              【讨论】:

                【解决方案18】:

                我有一个完美的工作 git,但当我尝试推送到 master 时突然出现了这个错误。我发现这是因为存储库主机有问题。

                如果您使用 GitHub 或 Bitbucket,您可以轻松查看状态

                https://status.github.com/messageshttps://status.bitbucket.org/

                【讨论】:

                【解决方案19】:

                Git 需要使用 HTTPS:

                在终端中输入:

                $ git remote set-url origin abc@***.com:path/to/httpURLRepo
                

                然后提交:

                $ git add .
                $ git commit -m "This is the commit message"
                

                【讨论】:

                【解决方案20】:

                我已经尝试了所有方法,包括生成新密钥、添加到 GitHub 帐户、编辑 .ssh/config.git/config。但它仍然给了我同样的错误。 然后我尝试了以下命令,它确实成功了。

                ssh-agent bash -c 'ssh-add ~/.ssh/id_rsa; git clone git@github.com:username/repo.git'
                

                【讨论】:

                • 如前所述,您是否尝试过运行ssh -T git@github.com?这对我有用。
                • @MikeS。不,我没有尝试过。如果我再次遇到类似问题,我会尝试。谢谢。
                【解决方案21】:

                我刚才遇到了这个问题,通过 git config user.email "youremail"解决了。


                更新: 根本原因可能是我糟糕的网络和糟糕的代理。 我仍然不知道为什么会这样,但是每次出现这个错误,这个命令都有效!!!

                【讨论】:

                  【解决方案22】:

                  就我而言,我在办公室使用公司网络(没有互联网连接)。为了从github拉代码,我在gitbash中设置了https代理,然后使用https而不是ssh来拉代码,它工作正常。但是,在推送代码时,https 代理将不起作用。所以要么切换到 Internet 网络(有 Internet 连接),要么设置 ssh 代理可以解决问题。

                  【讨论】:

                    【解决方案23】:

                    实际上,我尝试了很多方法让它在 Win7 上运行,因为将 SSH exectun 从本机更改为 build-it 和向后以及同样的错误。 碰巧,我在“.git/config”文件中将其更改为 HTTPS:

                    [remote "origin"]
                            url = https://github.com/user_name/repository_name.git
                            fetch = +refs/heads/*:refs/remotes/origin/*
                    

                    它终于奏效了。所以也许它也对你有用。

                    【讨论】:

                      【解决方案24】:

                      我遇到了同样的问题,过了一会儿我看到我在 root 用户下(使用 sudo -s)。愿这对某人有所帮助。

                      【讨论】:

                      • 我确认即使您在您的机器和 BitBucket 上设置了 ssh 密钥,如果您尝试使用 'sudo' 命令执行 'git pull',它仍然会显示此错误。
                      【解决方案25】:

                      我通过重新启动终端(打开一个新窗口/标签)解决了这个问题。

                      因此,如果您真的不想/不需要了解潜在问题,那么在深入挖掘之前,值得一试测试方法:)

                      【讨论】:

                      • 这不起作用,但我不得不关闭我的 Wi-Fi,然后重新打开。
                      【解决方案26】:

                      我在 Windows 10 上使用 gitbash 时遇到了这个问题。我尝试了几种方法来解决这个问题,主要是这些:

                      1. 重新创建了我的 ssh 密钥并更新为 bitbucket。没有帮助
                      2. 使用this 开启调试,发现我收到here 询问的“shell request failed on channel 0”
                      3. 重新启动我的 windows 电脑

                      以上都没有帮助。我最终重新安装了Git for windows,与我所做的其他事情相比,这只花了几分钟,它解决了问题!

                      【讨论】:

                      • 为什么我两天前没有看到你的答案?我已经花了很多时间来修复这个问题...... :(
                      【解决方案27】:

                      就我而言,它是 postBuffer..

                      git config --global http.postBuffer 524288000
                      

                      参考阅读:https://gist.github.com/marcusoftnet/1177936

                      【讨论】:

                        【解决方案28】:

                        我遇到了同样的错误,这让我得到了这个对我没有帮助的答案。 我第一次尝试使用以下命令创建一个新的“裸”存储库来跟踪 NTFS 位置:

                        cd myrepository
                        git init --bare \\myserver.mycompany.local\myrepository.git
                        git init
                        git status
                        git add .
                        git status
                        git commit -m "Initial Commit"
                        git remote add origin \\myserver.mycompany.local\myrepository.git
                        git push -u origin master
                        git status
                        

                        我的问题是在尝试添加源以设置(新)跟踪的上游分支时,在 NTFS 位置使用反斜杠而不是正斜杠。

                        我必须使用以下方法删除原点:

                        git remote rm origin
                        

                        然后使用预期的正斜杠再次添加原点

                        git remote add origin //myserver.mycompany.local/myrepository.git
                        

                        希望这对将来的人有所帮助。

                        【讨论】:

                          【解决方案29】:

                          更换电脑后出现此错误。我将 SourceTree 与 Bitbucket 一起使用。

                          所以我必须在新计算机上的 Bitbucket 设置 > 安全 > SSH 密钥中添加 SourceTree 生成的 SSH 密钥,同时连接到我在网络上的 Bitbucket 帐户。

                          【讨论】:

                            【解决方案30】:
                            user@server:/etc/nginx$ cat .git/config 
                            ...
                            [remote "origin"]
                                url = git@gitlab.com:user/.git
                                fetch = +refs/heads/*:refs/remotes/origin/*
                            ...
                            

                            1. 使用 ssh 而不是 https。
                            2. 在 git 中使用 ssh 密钥(添加 ssh 密钥)。
                            3. 如果您是 root,请使用 ssh 密钥。

                            $ sudo ssh-keygen
                            $ cat /root/.ssh/id_rsa.pub 
                            
                            $ git init
                            $ git add file
                            $ git commit -m "add first file"
                            $ git remote add origin git@gitlab.com:user/example.git 
                            $ git push -u origin master
                            

                            【讨论】:

                              猜你喜欢
                              • 2015-01-19
                              • 1970-01-01
                              • 1970-01-01
                              • 2015-11-21
                              • 2019-10-24
                              • 2015-10-31
                              • 2020-09-14
                              • 2013-04-13
                              • 2014-08-07
                              相关资源
                              最近更新 更多