我已经使用 git 一段时间没有问题,然后突然在使用时开始抛出此错误git push
:
错误:gnutls_handshake() 失败:收到了意外长度的 TLS 数据包。访问时...致命:HTTP 请求失败
它工作正常,然后突然停止。
问题是什么?
谢谢
我已经使用 git 一段时间没有问题,然后突然在使用时开始抛出此错误git push
:
错误:gnutls_handshake() 失败:收到了意外长度的 TLS 数据包。访问时...致命:HTTP 请求失败
它工作正常,然后突然停止。
问题是什么?
谢谢
gnutls
包裹好像有问题。作为一种解决方法,您可以尝试git
使用openssl
. 您可以在此处找到有关如何完成此操作的更多信息。
关于 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 以自动完成。如果您之前重新编译过,这可能无法完美运行。
在我的情况下,同样的错误是由完全不同的事情引起的。
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 后发现它根本没有改变任何东西)
这个答案可能会有所帮助。尽管问题很老,但我很惊讶这些问题无处可联系在一起。
为了确保有用的信息不会丢失,我从问题中复制了一个简短的解决方案:
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"