git错误:RPC失败;卷曲56 GnuTLS

时间:2016-07-14 15:58:02

标签: git ubuntu

我使用的是Ubuntu 16.04。当我想要git push origin master我得到: 错误:RPC失败; curl 56 GnuTLS recv error(-12):收到TLS致命警报。 致命:远程端意外挂断 致命:远程端意外挂断 一切都是最新的

28 个答案:

答案 0 :(得分:21)

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

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

The remote end hung up unexpectedly while git cloning

只需更新http post缓冲区值

git config --global http.postBuffer 1048576000

答案 1 :(得分:13)

要解决此问题:

使用 openssl 重建git而非 gnutls 解决了我的问题。

我关注these instructions

答案 2 :(得分:7)

阅读您的帖子后,我可以通过

简单地解决它
apt install gnutls-bin

答案 3 :(得分:4)

我也遇到了同样的情况并重新启动系统解决了它:)

答案 4 :(得分:3)

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

在全球范围内:(如果您clone需要,请不要忘记重置)

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

或在本地存储库

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

答案 5 :(得分:3)

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

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

e.g

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

答案 6 :(得分:3)

尝试升级openssl个模块

我这样做解决了

sudo apt install openssl

答案 7 :(得分:2)

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

一种解决方法是使用http代替。

答案 8 :(得分:1)

另一种方式:请再试一次,有时它只是由您的网络状态产生的结果。

我的情况如下。

enter image description here

答案 9 :(得分:1)

如果您需要克隆或提取并且问题出在存储库历史记录的大小上,我有一个解决方法。如果您不能保证以后再推送,它也可能会有所帮助。

仅使用<Tasks> <# DataTable DFT =ExternalDataAccess.GetDataTable(connString,FileConnection); foreach(DataRow SourceFile in DFT.Rows) { #> <ExecuteSQL Name="Truncate <#=SourceFile[8]#>" ConnectionName="OLEDB_Staging" BypassPrepare="false"> <DirectInput>Truncate Table <#=SourceFile[8]#>; </DirectInput> </ExecuteSQL> <Dataflow Name="<#=SourceFile[0]#>"> <PrecedenceConstraints> <Inputs> <Input OutputPathName="Truncate <#=SourceFile[8]#>.Output"/> </Inputs> </PrecedenceConstraints> <Transformations> <FlatFileSource ConnectionName="<#=SourceFile[0]#>" Name="<#=SourceFile[0]#>" RetainNulls="true" /> <DerivedColumns Name="Derived Column"> <Columns> <Column Name="SUBMISSION_ID" DataType="Int32">0</Column> </Columns> </DerivedColumns> <OleDbDestination ConnectionName="OLEDB_Staging" Name="OLEDB <#=SourceFile[0]#>" KeepNulls="true"> <ExternalTableOutput Table="<#=SourceFile[8]#>"></ExternalTableOutput> </OleDbDestination> </Transformations> </Dataflow> <Merge Name="Merge <#=SourceFile[7]#>" UnspecifiedColumnDefaultUsageType="CompareUpdateInsert" TargetConnectionName="OLEDB_Staging" TargetConstraintName="<#=SourceFile[7]#>.<#=SourceFile[9]#>"> <ExternalTableSource Table="<#=SourceFile[8]#>"/> </Merge> <# } #> </Tasks> </Package> 检索最后一次提交。

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

--depth=[number of last commits]

答案 10 :(得分:0)

对于 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

我希望这能解决问题。

答案 11 :(得分:0)

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

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

在主要系统操作系统版本升级之后,我们开始在所有 git 客户端上收到此错误。 结果是 nginx 被替换了,新包的默认 nginx.conf 被安装了。 默认的 nginx 用户“www-data”已经不是以前的样子了。

在这背后的某个地方,一定存在权限问题,因为将 nginx 用户重置回其以前的值,然后重新启动 nginx 使一切重新开始。 .... 去搞清楚 ! (是的,在解决它的一个单一更改之前,我已经多次重新启动 nginx)

答案 12 :(得分:0)

当我们克隆以前在TFS上运行的旧项目时,我看到了类似的问题(尤其是深度问题)。启用长路径可以解决我们的问题,可能还有其他值得尝试的地方。

git config --system core.longpaths true

答案 13 :(得分:0)

我也有类似的错误:

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

尝试从Github克隆存储库时。

尝试了此处发布的大多数解决方案后,这些解决方案都没有起作用,结果证明是我们家庭网络中的父母控制。关闭这些家长控制即可解决问题。

答案 14 :(得分:0)

在将Go Git Server托管在nginx后面并进行克隆时遇到了同样的问题:

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解决了该问题)的根本原因来验证这一点。

答案 15 :(得分:0)

我的Mac已连接到2.5GHZ网络,我必须使wifi达到5GHz。问题消失了。

答案 16 :(得分:0)

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

答案 17 :(得分:0)

我遇到了同样的问题,并使用SSH协议解决了该问题。

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

答案 18 :(得分:0)

在尝试向上游推送新分支时出现此错误

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”分支中。正常情况下这应该不是问题。

答案 19 :(得分:0)

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

答案 20 :(得分:0)

WSL2用户通过Ubuntu 18 read this获得此支持。 基本上,您需要更新无线驱动程序。

答案 21 :(得分:0)

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

答案 22 :(得分:0)

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

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

$ unset all_proxy && unset ALL_PROXY

答案 23 :(得分:0)

我刚刚设法通过使用SSH克隆来解决此问题。

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

答案 24 :(得分:0)

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

答案 25 :(得分:0)

我所做的就是断开连接,然后从wifi重新连接我的电脑,它正常工作。有时答案可能非常简单。我的现在可以工作

答案 26 :(得分:-2)

只需执行命令

git init

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

答案 27 :(得分:-6)

重新安装git将解决问题。

sudo apt-get remove git
sudo apt-get update
sudo apt-get install git