6

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

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

它工作正常,然后突然停止。

问题是什么?

谢谢

4

5 回答 5

3

gnutls包裹好像有问题。作为一种解决方法,您可以尝试git使用openssl. 您可以在此处找到有关如何完成此操作的更多信息。

于 2013-03-28T16:40:08.543 回答
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 以自动完成。如果您之前重新编译过,这可能无法完美运行。

于 2013-07-30T19:29:46.370 回答
1

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

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 后发现它根本没有改变任何东西)

于 2016-04-03T13:19:19.903 回答
1

这个答案可能会有所帮助。尽管问题很老,但我很惊讶这些问题无处可联系在一起。

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

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"
于 2018-01-25T08:23:23.230 回答
1

我也遇到了同样的问题,后来通过在我的本地机器上禁用我的卡巴斯基防病毒软件来解决这个问题。我希望这对其他人有帮助。 错误报告和解决方案

于 2019-02-26T11:47:14.463 回答