【问题标题】:How to fix git error: RPC failed; curl 56 GnuTLS如何修复 git 错误:RPC 失败;卷曲 56 GnuTLS
【发布时间】:2016-07-14 15:58:01
【问题描述】:

我使用 Ubuntu 16.04。当我想 git push origin master 我得到:

error: RPC failed; curl 56 GnuTLS recv error (-12): A TLS fatal alert has been received.
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
Everything up-to-date

【问题讨论】:

  • 我不知道发生了什么,但我将输出设置为更详细,并且不知何故它起作用了。 export GIT_TRACE_PACKET=1; export GIT_TRACE=1; export GIT_CURL_VERBOSE=1 可能与此无关,但查看详细输出可能会有所帮助,以便您查明问题。
  • 类似问题。错误:RPC 失败; curl 56 GnuTLS recv 错误(-54):拉取错误
  • 请参考这个链接,他是英雄。 stackoverflow.com/a/52530617/794765

标签: git ubuntu


【解决方案1】:

@harlequin 接受的答案可能有效,但我花了 2 个小时,无法从源代码构建 git 包。

但是,请检查以下链接,因为这对我有用。

The remote end hung up unexpectedly while git cloning

只需更新 http post 缓冲区值

git config --global http.postBuffer 1048576000

【讨论】:

  • 我必须重新启动系统才能完成这项工作
  • 我刚刚打开 GIT Extensions cmd 并执行了 Shubham 显示的行,然后从 Visual Studio 进行的推送完美运行!谢谢!
【解决方案2】:

看了你的帖子,我自己解决了

apt install gnutls-bin

【讨论】:

  • 我在 debian 9.11 上使用相同的解决方案(安装 gnutls-bin)遇到了同样的问题。
  • 这并不能解决我的问题
  • 对我有用,伙计们,我必须收藏这个
【解决方案3】:

解决这个问题:

openssl 而不是 gnutls 重建 git 解决了我的问题。

我关注了these instructions

【讨论】:

  • 整个过程可能需要~1小时
  • 在 Ubuntu 16.04 上花了大约 10 分钟!对于第 7 步,在 debian/rules 中删除“TEST=test”行后,我还更改了 OPTS 中的 NO_OPENSSL=0 并在第 8 步中添加了“-uc -us”以不签署包。
  • 我在执行git clone时遇到同样的错误,这个解决方案救了我!
  • 我收到 error: RPC failed; curl 18 transfer closed with outstanding read data remaining 作为在您链接的文章末尾发表评论的人之一。我确认删除测试会节省大量时间,而需要 -uc -us 来制作自定义包。但是,我还没有尝试过 NO_OPENSSL=0 ......现在我对我的解决方法感到满意(作为答案发布)。
  • 你有 Ubuntu-18 的短解决方案吗?或者上面的会起作用吗?
【解决方案4】:

如果您需要克隆或拉取,我有一个解决方法,而问题在于存储库历史记录的大小。当您想稍后推送时,它也可能会有所帮助,但无法保证。

只需使用--depth=[number of last commits] 检索最后一次提交。

您可以在克隆时执行此操作,或者,如果从添加了远程的本地存储库工作,则可以在拉取时执行此操作。例如,仅检索(每个分支的)最后一次提交:

git clone repo --depth=1
# or
git pull --depth=1

更新:如果遥控器在您前面太多,问题可能会在您尝试提取最后的更改时再次出现,但是太多并且连接会以 curl 56 关闭。您可能需要@987654324 @,如果您正在处理一个非常活跃的存储库,这会很乏味。

【讨论】:

  • 对于使用此解决方法的用户:您的 Internet 连接可能由于某种原因不支持长 TLS 连接。我更改了提供商/增加了带宽,我不再需要解决方法(请参阅stackoverflow.com/a/59426260/3256073
  • 当我输入--depth=1时,错误不会出现。但我需要所有的提交。怎么办?
  • 您可以尝试逐步拉得越来越高...不确定这是否会避免连接过长。如果问题来自您的连接,您还可以从其他地方克隆存储库,将其放在 USB 密钥上,将其带回家,然后将其复制回您的计算机上。从这里开始,请确保定期拉取,这样您就不必一次下载太多......(是的,我确实这样做了,然后才能更改提供者,并且它起作用了)
  • 这解决了我从 WSL2 中克隆大型 git repos(特别是 bootstrap 和 Font-Awesome)时的问题。谢谢。
【解决方案5】:

您可以设置一些选项来解决问题

在全局级别:(clone 需要,之后不要忘记重置)

$ git config --global http.sslVerify false
$ git config --global http.postBuffer 1048576000

或在本地存储库中

$ git config http.sslVerify false
$ git config http.postBuffer 1048576000

【讨论】:

  • 关闭sslVerify 听起来不安全?
  • 为我工作! :)
【解决方案6】:

我也遇到了同样的情况,重启系统解决了:)

【讨论】:

  • 什么意思?简单的重启?
  • @KansaiRobot 我假设您现在已经对此进行了排序。但是,对于其他有同样疑问的人,是的,我的本地计算机的简单重启为我解决了这个问题。
【解决方案7】:

我也在使用基于Ubuntu 的系统(Mint mate 18),从 github 克隆大型 repo 时遇到了类似的问题。

对我有用的简单解决方案是使用 ssh 协议而不是 http(s) 协议。

例如

git clone git@github.com:xxx/yyy.git

【讨论】:

    【解决方案8】:

    尝试升级openssl模块

    我通过这样做解决了它

    sudo apt install openssl
    

    【讨论】:

    • 这就是我的解决方案!!谢谢!!
    【解决方案9】:

    WSL2 用户通过 Ubuntu 18 获得此功能,read this。 基本上你需要更新你的无线驱动程序。

    【讨论】:

      【解决方案10】:

      当我们克隆过去存在于 TFS 上的一些遗留项目时,我在一些遗留项目中看到了类似的问题(尤其是深度问题)。启用长路径解决了我们的问题,可能是其他值得尝试的事情。

      git config --system core.longpaths true
      

      【讨论】:

        【解决方案11】:

        我在 Ubuntu 18.04 上使用 https 克隆 CppCheck 时遇到了这个问题。

        一个解决方法是改用http

        【讨论】:

          【解决方案12】:

          我所做的只是断开我的电脑与 wifi 的连接并重新连接它,它工作正常。有时答案可能很简单。我的现在工作了

          【讨论】:

            【解决方案13】:

            我只是设法通过使用 SSH 克隆来解决这个问题。

            为此,我必须将我机器的 SSH 密钥添加到我的帐户中。

            【讨论】:

              【解决方案14】:

              此外,此错误可能发生在您在命令行中使用任何代理时。

              如果您之前导出任何代理,请取消设置。

              $ unset all_proxy && unset ALL_PROXY
              

              【讨论】:

                【解决方案15】:

                我通过断开 VPN 解决了​​这个问题(我的操作系统是 ubuntu-16.04)。

                【讨论】:

                  【解决方案16】:

                  对于 Linux: 很简单,您可以运行以下命令:

                  1) git config -l
                  2) git config --global http.postBuffer 524288000
                          Or set double value  1048576000
                  3) git config --global https.postBuffer 
                  4) git config --global core.compression -1 
                  5) service apache2 restart
                  

                  然后再次检查 git 的配置

                  git 配置 -l

                  现在你可以运行克隆命令了

                  git clone yourrepo

                  我希望这能解决这个问题。

                  【讨论】:

                    【解决方案17】:

                    这里的另一种方式:请再试一次,有时它只是你的网络状态的结果。

                    我的情况如下。

                    【讨论】:

                      【解决方案18】:

                      检查您的网络是否正常工作...由于互联网问题也会出现此问题

                      【讨论】:

                        【解决方案19】:

                        尝试为此禁用您的 IPV6,然后再禁用。我认为这是你的问题。

                        【讨论】:

                          【解决方案20】:

                          我尝试了以上所有方法都没有成功。最终我意识到我的 WiFi 连接很弱,因此下载速度很慢。我通过以太网连接了我的设备,这立即解决了我的问题。

                          【讨论】:

                            【解决方案21】:

                            我在尝试向上游推送新分支时遇到此错误

                            git push --set-upstream origin xyz
                            

                            我尝试了上面建议的几乎所有 git config 编辑,包括系统重启。没有任何效果。

                            所以我回到 master 并拉动,回到我的 xyz 分支,与 master 合并并能够推送。

                            * currently on branch xyz
                            git checkout master
                            git pull
                            git checkout xyz
                            git merge master
                            git push --set-upstream origin xyz
                            

                            我不得不说 master 中的任何内容都与我在新分支“xyx”中的任何更改相冲突。只有几个来自 master 的新提交合并到我的“xyz”分支。这在正常情况下应该不是问题。

                            【讨论】:

                              【解决方案22】:

                              我也遇到了同样的问题,通过SSH协议解决了。

                              git clone git@github.com:micro/micro.git
                              

                              【讨论】:

                                【解决方案23】:

                                在 nginx 和克隆后面托管 Go Git 服务器时遇到同样的问题:

                                remote: Enumerating objects: 103, done. remote: Counting objects: 100% (103/103), done. remote: Compressing objects: 100% (47/47), done. remote: Total 103 (delta 52), reused 99 (delta 51), pack-reused 0 Receiving objects: 100% (103/103), 11.56 KiB | 1.16 MiB/s, done. Resolving deltas: 100% (52/52), done. error: RPC failed; curl 56 GnuTLS recv error (-110): The TLS connection was non-properly terminated.

                                在搜索了基于 RPC 的问题后,他似乎需要使用 HTTP2

                                因此我的 nginx 站点配置中的这一行:

                                listen 443 ssl; # managed by Certbot

                                已更改为启用 http2 - 这不是默认设置:

                                listen 443 ssl http2; # managed by Certbot

                                总的来说,TLS 似乎更快乐(即,在检查详细输出时,我遇到了关于 curl 和 TLS 的其他错误)

                                我已通过删除 http2 验证了这是根本原因,这会重现错误并恢复 http2 可以解决问题。

                                【讨论】:

                                  【解决方案24】:

                                  我也有类似的错误:

                                  错误:RPC 失败; curl 56 GnuTLS recv 错误 (-9): 收到了一个意外长度的 TLS 数据包。

                                  尝试从 Github 克隆存储库时。

                                  在尝试了此处发布的大多数解决方案后,都没有奏效,结果证明是我们家庭网络上的家长控制。关闭这些家长控制解决了这个问题。

                                  【讨论】:

                                    【解决方案25】:

                                    如果您正在运行 git 服务器服务,那么它不是一个 git 客户端问题......也许它也是一个 git 服务器问题! 这就是我的解决方案......

                                    我们正在运行一个带有用于 https 的前端 nginx 反向代理的 gitbucket 服务器。

                                    在主要的系统操作系统版本升级之后,我们开始在所有 git 客户端中遇到此错误。 原来 nginx 被替换了,新包的默认 nginx.conf 被安装了。 默认的 nginx 用户 'www-data' 与以前不同了。

                                    在这一切的某个地方,一定存在权限问题,因为将 nginx 用户重置回原来的值,然后重新启动 nginx 让一切恢复正常。 .... 去搞清楚 ! (是的,在解决它的一个单一更改之前,我已经多次重启了 nginx)

                                    【讨论】:

                                      【解决方案26】:

                                      我从昨天开始遇到同样的问题,但现在成功解决了这个问题。

                                      首先,删除 git 包和任何其他依赖包

                                      $ sudo apt-get remove git
                                      

                                      然后安装 git

                                      sudo apt-get install git-all
                                      

                                      【讨论】:

                                        【解决方案27】:

                                        我只运行一个命令就解决了它

                                        apt 升级(作为 root 用户)

                                        【讨论】:

                                          【解决方案28】:

                                          我的 mac 连接到 2.5GHZ 网络,我必须将我的 wifi 启用到 5GHz。然后问题就消失了。

                                          【讨论】:

                                            【解决方案29】:

                                            这解决了我的问题

                                            $ git config http.sslVerify false
                                            $ git config http.postBuffer 1048576000
                                            

                                            【讨论】:

                                            • 禁用 SSL 验证不是一个好的解决方案。
                                            【解决方案30】:

                                            只需执行命令

                                            git init
                                            

                                            在克隆之前为我解决了这个问题。

                                            【讨论】:

                                              猜你喜欢
                                              • 2018-06-10
                                              • 2022-11-04
                                              • 1970-01-01
                                              • 2015-06-15
                                              • 2014-10-16
                                              • 1970-01-01
                                              • 1970-01-01
                                              • 2023-03-19
                                              • 2018-10-09
                                              相关资源
                                              最近更新 更多