git连接到https服务器时出现“gnutls_handshake() failed”
git连接到https服务器时出现“错误: gnutls_handshake()失败”
问题描述
当我尝试使用git
连接到任何HTTPS服务器时(例如git clone
),它会出现以下错误:
$ git clone https://github.com/xx/x.git
Cloning into 'xx'...
fatal: unable to access 'https://github.com/xx/xx.git/': gnutls_handshake() failed: The TLS connection was non-properly terminated.
之前使用搜索到一些文章,说是代理问题,取消即可:
# 如果没有配置代理,可使用以下命令 取消代理 :
git config --global --unset http.proxy
git config --global --unset https.proxy
可是问题仍然存在。
error: gnutls_handshake() failed: A TLS packet with unexpected length was received. while accessing ...
fatal: HTTP request failed
我认为可能有些与gnutls_handshake
相关的软件包已被破坏;开始怀疑SSL有关的部分。
参考资料:
傻瓜化解决方法
关闭SSL自签名,不需要额外的改动:
git config --global http.sslVerify false
附录:通过重装git解决
得到问题的原因,gnutls
包出现问题可能会导致连接异常,它在代理背后很奇怪。
但是openssl
即使在弱网络中也能正常工作。所以解决方法是我们应该用openssl
编译git
。
为此,请运行以下命令:
$ sudo apt-get update
$ sudo apt-get install build-essential fakeroot dpkg-dev
$ sudo apt-get build-dep git
$ mkdir ~/git-openssl
$ cd ~/git-openssl
$ apt-get source git
$ dpkg-source -x git_1.7.9.5-1.dsc
$ cd git-1.7.9.5
请记住将
1.7.9.5
替换为系统中实际的git版本。
然后,编辑debian/control
文件(运行命令:gksu gedit debian/control
)并将所有libcurl4-gnutls-dev
实例替换为libcurl4-openssl-dev
。
然后构建软件包(如果测试失败,可以从文件debian/rules
中删除TEST=test
行):
sudo apt-get install libcurl4-openssl-dev
sudo dpkg-buildpackage -rfakeroot -b
安装新包:
- i386:
sudo dpkg -i ../git_1.7.9.5-1_i386.deb
- x86_64:
sudo dpkg -i ../git_1.7.9.5-1_amd64.deb
灵感来自:https://github.com/xmendez/wfuzz/wiki/PyCurlSSLBug
git连接到https服务器时出现“gnutls_handshake() failed”的更多相关文章
- 连接到 Linux 服务器时首先要运行的 5 个命令
作为一个系统管理员/SRE 工作 5 年后,我知道当我连接到一台 Linux 服务器时我首先应该做什么.这里有一系列关于服务器你必须了解的信息,以便你可以(在大部分时间里)更好的调试该服务器. 连上 ...
- git clone或者git clone时遇到gnutls_handshake() failed: An unexpected TLS packet was received.如何处理?
答: 直接将https修改为http即可, 如: $ git clone https://github.com/Jello_Smith/my-example.git -> git clone ...
- 在centos搭建git服务器时,不小心把/home/git目录删除了,我是怎么恢复的
在centos搭建git服务器时,不小心把/home/git目录删除了,我是怎么恢复的 在删除掉/home/git目录后,每次 git push提交时,都让填写密码,烦 第一步:在本地找到id_rsa ...
- PhpStorm 集成 开源中国(oschina.net)的Git项目,提交SVN时注意事项
第一步:配置 git.exe File -> Default Settings -> Version Control -> Git -> Path go Git executa ...
- PhpStorm 9.03 集成 开源中国(oschina.net)的Git项目,提交SVN时注意事项
第一步:配置 git.exe File -> Default Settings -> Version Control -> Git -> Path go Git executa ...
- Git详解之四 服务器上的Git
以下内容转载自:http://www.open-open.com/lib/view/open1328069988843.html 服务器上的 Git 到目前为止,你应该已经学会了使用 Git 来完成日 ...
- 使用 Git 对原理图和线路板时行版本控制
使用 Git 对原理图和线路板时行版本控制 由于之前一直用 Git 管理代码,我又开始试用 git 来对原理图和线路板时行版本控制. 由于 原理图和 PCB 的文件都是二进制文件,git 管理并不怎么 ...
- Nodejs创建HTTPS服务器
Nodejs创建HTTPS服务器 从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的Jav ...
- 【git】git中使用https和ssh协议的区别以及它们的用法
git可以使用四种主要的协议来传输资料: 本地协议(Local),HTTP 协议,SSH(Secure Shell)协议及 git 协议.其中,本地协议由于目前大都是进行远程开发和共享代码所以一般不常 ...
- git使用,Git的skil-map,git配置http/https/socks5代理
. 检出.克隆库: git clone git://git.openwrt.org/openwrt.git 2. git查看某个文件的修改历史 git log --pretty=oneline 文件名 ...
随机推荐
- 6.Ingress 七层负载
官方文档:https://kubernetes.io/zh-cn/docs/concepts/services-networking/ingress/题目: 设置配置环境: [candidate@no ...
- 一个可以输出当前移动设备机型(安卓,ios)系统版本的html页面
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- EPAI手绘建模APP资源管理和模型编辑器2
g) 矩形 图 26模型编辑器-矩形 i. 修改矩形的中心位置. ii. 修改矩形的长度和宽度. h) 正多边形 图 27模型编辑器-内接正多边形 图 28模型编辑器-外切正多边形 i. 修改正多 ...
- 坐标轴调控大揭秘:Matplotlib坐标轴设置全攻略+顺口溜,一文掌握!
在数据可视化的世界里,Matplotlib是那把魔法棒,让枯燥的数据跃然纸上,而掌控这把魔法棒的核心,就是对坐标轴的精妙操作.今天,就让我们一起揭开Matplotlib坐标轴设置的神秘面纱,配上易记的 ...
- 【2023微博评论爬虫】用python爬上千条微博评论,突破15页限制!
目录 一.爬取目标 二.展示爬取结果 三.爬虫代码 四.同步视频 五.获取完整源码 您好,我是@马哥python说,一枚10年程序猿. 一.爬取目标 前些天我分享过一篇微博的爬虫: 马哥python说 ...
- Dash 2.17版本新特性介绍
本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/dash-master 大家好我是费老师,不久前Dash发布了其2.17.0版本,执行下面的命令进行最 ...
- 如何在docker环境下的纯净ubuntu系统中安装最新版nginx
原文件地址: https://www.cnblogs.com/taoshihan/p/11588269.html 视频地址: https://www.bilibili.com/video/av6898 ...
- 当字符遇上 scanf() 要当心
当字符遇上 scanf() 要当心 看一下程序 char ch1,ch2; printf("请输入ch1,ch2的值:"); scanf("%c %c",&am ...
- C#WPF的多屏显示问题
如果想让窗口在第二个屏幕中显示 public MainWindow() { InitializeComponent(); Screen[] _screens = Screen.AllScreens; ...
- CH57x/CH58x/CH59x获取从机广播信息
有时需要通过主机设备(MCU非手机)获取从设备的广播信息例如广播包,MAC地址,扫描应答包等 以下的程序片段及功能实现是在WCH的CH59X的observer例程上实现的: 1.获取广播包 所有的函数 ...