git错误:gnutls_handshake()在推送时失败

时间:2013-03-27 17:28:12

标签: git

我一直在使用git一段时间没有问题,然后突然在使用git push时开始抛出此错误:

  

错误:gnutls_handshake()失败:收到了一个意外长度的TLS数据包。在访问时......   致命:HTTP请求失败

工作正常,然后突然停了下来。

有什么问题?

由于

5 个答案:

答案 0 :(得分:3)

gnutls包似乎存在问题。作为解决方法,您可以尝试使用git编译openssl。有关如何完成此操作的更多信息,您可以找到here

答案 1 :(得分:1)

关于askubuntu的链接讨论引用了可能与您自己不匹配的git的版本号。而不是这两行:

sudo dpkg-source -x git_1.7.9.5-1.dsc
cd git_1.7.9.5 8.

您需要考虑您正在使用的git版本。就我而言,它是1.8.xxxxx。

sudo dpkg-source -x git_<git-version-number>.dsc
cd git_<git-version-number>

解决此问题的一种简单方法是复制命令的第一部分,然后按Tab键自动完成。如果您之前已经重新编译过,这可能无法正常工作。

答案 2 :(得分:0)

在我的情况下,同样的错误是由完全不同的事情造成的。

Debian从Wheezy升级到Jessie,因此apache升级到2.2.22到2.4.10。 git试图推送到 https://www.example.com ,它停止使用error: gnutls_handshake() failed: A TLS packet with unexpected length was received

事实证明, www.example.com 正在解析IPv4和IPv6地址,而apache配置只有<Virtualhost x.y.w.z:443>个IPv4地址。将其更改为<Virtualhost _default_:443>可解决问题。

(正好如果它能帮助其他人有同样的问题......只有在使用openssl进行繁琐的git重新编译之后才能找到它)

答案 3 :(得分:0)

This answer可能有所帮助。我很惊讶这些问题无处可归,尽管问题已经过去了。

为了确保有用的信息不会丢失,我从问题中复制一个简短的解决方案:

hostname=XXX
port=443
trust_cert_file_location=`curl-config --ca`

sudo bash -c "echo -n | openssl s_client -showcerts -connect $hostname:$port 2>/dev/null  | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' >> $trust_cert_file_location"

答案 4 :(得分:0)

我也遇到了相同的问题,该问题后来通过在本地计算机上禁用我的Kaspersky防病毒软件得以解决。我希望这可能对其他人有帮助。 error report and solution