git 错误:gnutls_handshake() 推送失败
Posted
技术标签:
【中文标题】git 错误:gnutls_handshake() 推送失败【英文标题】:git error: gnutls_handshake() failed on push 【发布时间】:2013-03-17 22:09:32 【问题描述】:我用 git 有一段时间没有问题,然后突然在使用git push
时开始抛出这个错误:
错误:gnutls_handshake() 失败:收到了一个长度意外的 TLS 数据包。在访问... 致命:HTTP 请求失败
它工作正常,然后突然停止。
有什么问题?
谢谢
【问题讨论】:
看这里:askubuntu.com/questions/186847/error-gnutls-handshake-falied @niculare - 我在这条线上收到此错误dpkg-source: error: cannot open git_1.7.9.5-1.dsc: No such file or directory
sudo dpkg-source -x git_1.7.9.5-1.dsc
检查文件git_1.7.9.5-1.dsc
是否在当前目录中。如果没有,那么可能之前的一些命令失败了。
@niculare - 有效,添加到答案中以便我接受,谢谢
【参考方案1】:
我也遇到了同样的问题,后来通过在我的本地计算机上禁用卡巴斯基防病毒软件解决了这个问题。我希望这对其他人有帮助。
【讨论】:
【参考方案2】: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"
【讨论】:
【参考方案3】:在我的情况下,同样的错误是由完全不同的事情引起的。
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 后发现它根本没有改变任何东西)
【讨论】:
【参考方案4】:关于 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 以自动完成。如果您之前重新编译过,这可能无法完美运行。
【讨论】:
【参考方案5】:gnutls
包似乎有问题。作为一种解决方法,您可以尝试使用openssl
编译git
。有关如何完成此操作的更多信息,您可以找到here。
【讨论】:
以上是关于git 错误:gnutls_handshake() 推送失败的主要内容,如果未能解决你的问题,请参考以下文章
解决 git 同步错误 gnutls_handshake() failed
解决 git 同步错误 gnutls_handshake() failed
解决 git 同步错误 gnutls_handshake() failed
解决 git 同步错误 gnutls_handshake() failed