致命:无法访问“.....”:gnutls_handshake() 失败:握手失败
fatal: unable to access ".....": gnutls_handshake() failed: Handshake failed
过去几个月我一直在使用 Git。最近当我尝试克隆或推送时,我不断收到此错误。我已经在互联网上进行了研究,但到目前为止,没有任何解决方案对我有用。有人有想法吗?
外部说明:现在我搬到了不同的国家,它在我以前的地方工作得很好。
Git 版本:2.11.0,OS:Debian GNU/Linux 9.11(延伸)
错误:
git push
fatal: unable to access 'https://**************/': gnutls_handshake() failed: Handshake failed
此错误意味着 Git 无法与您尝试使用的服务器建立安全连接。您的 Git 版本使用 GnuTLS 库来设置 TLS(加密)连接,但由于某种原因,设置过程失败。
这可能有几个原因。一个是您的服务器(您没有提到的服务器)正在使用一组不兼容的密码套件或 TLS 版本,并且没有可以选择的通用加密算法。也有可能有人通过 MITM 设备篡改了连接。
您使用的 Git 和 GnuTLS 的版本应该可以很好地与大多数标准服务器一起工作。重新安装它不会有帮助。您可以尝试升级到更新版本的 Debian,或者您可以尝试使用 OpenSSL 针对 libcurl 版本自己构建 Git。您也可以只切换到基于 SSH 的远程,这将完全避免这种不兼容。
我遇到了同样的错误。
您可以尝试使用 OpenSSL 编译 git 而不是使用 Paul N. Baker's shell script 的 gnutls。
- 创建
file.sh
- 把link的代码放到这个文件里
- 授予此文件权限:
chmod a+x file.sh
- 运行:
sudo ./file.sh
这个 shell 脚本适合我。
我在使用 Ubuntu 14.04 LTS 时也遇到了这个问题。
最快的解决方案是使用 ssh 而不是 https。
以下是从 ssh 替换 https 的步骤:
在服务器上生成ssh key using ssh-keygen。
从第 1 步生成的 id_rsa.pub 文件中复制 public 密钥,并根据存储库主机将其添加到以下链接 -
比特桶 - https://bitbucket.org/account/settings/ssh-keys/
Github - https://github.com/settings/ssh/new
Gitlab - https://gitlab.com/profile/keys
现在运行以下命令从服务器命令行终端测试身份验证
比特桶
ssh -T git@bitbucket.org
Github
ssh -T git@github.com
GitLab
ssh -T git@gitlab.com
转到 repo 目录并使用 emac 或 vi 打开 .git/config 文件
将远程“来源”url(以 https 开头)替换为以下 -
对于 Bitbucket - git@bitbucket.org:<用户名>/.git
对于 Github - git@github.com:/.git
对于 Gitlab - git@gitlab.com:/.git
这是在 ubuntu 服务器 14 上修复此问题的解决方案。04.x
1,编辑文件:
sudo nano /etc/apt/sources.list
2、添加到文件sources.list
deb http://security.ubuntu.com/ubuntu xenial-security main
deb http://cz.archive.ubuntu.com/ubuntu xenial main universe
3、运行 命令更新和更新 CURL 到新版本
apt-get update && apt-get install curl
4、检查版本(可选):
curl -V
Response :
curl 7.47.0 (x86_64-pc-linux-gnu) libcurl/7.47.0 GnuTLS/3.4.10 zlib/1.2.8 libidn/1.28 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP UnixSockets
5、测试连接bitbucket(可选)
GIT_CURL_VERBOSE=1 git ls-remote https://bitbucket.org/
Response:
* Closing connection 0
fatal: repository 'https://bitbucket.org/' not found
大功告成。
如果您正在使用我的 Ubuntu 20.04,使用个人计算机(未配置代理),那么只需将您的 gnutls-bin
更新到最新版本
sudo apt-get install gnutls-bin
我算出来的
git config --global --unset https.proxy
git config --global --unset http.proxy
即使我尝试
git config --global --get https.proxy
git config --global --get http.proxy
没有显示任何结果,但取消设置 https.proxy 仍然有效。
过去几个月我一直在使用 Git。最近当我尝试克隆或推送时,我不断收到此错误。我已经在互联网上进行了研究,但到目前为止,没有任何解决方案对我有用。有人有想法吗?
外部说明:现在我搬到了不同的国家,它在我以前的地方工作得很好。 Git 版本:2.11.0,OS:Debian GNU/Linux 9.11(延伸)
错误:
git push
fatal: unable to access 'https://**************/': gnutls_handshake() failed: Handshake failed
此错误意味着 Git 无法与您尝试使用的服务器建立安全连接。您的 Git 版本使用 GnuTLS 库来设置 TLS(加密)连接,但由于某种原因,设置过程失败。
这可能有几个原因。一个是您的服务器(您没有提到的服务器)正在使用一组不兼容的密码套件或 TLS 版本,并且没有可以选择的通用加密算法。也有可能有人通过 MITM 设备篡改了连接。
您使用的 Git 和 GnuTLS 的版本应该可以很好地与大多数标准服务器一起工作。重新安装它不会有帮助。您可以尝试升级到更新版本的 Debian,或者您可以尝试使用 OpenSSL 针对 libcurl 版本自己构建 Git。您也可以只切换到基于 SSH 的远程,这将完全避免这种不兼容。
我遇到了同样的错误。
您可以尝试使用 OpenSSL 编译 git 而不是使用 Paul N. Baker's shell script 的 gnutls。
- 创建
file.sh
- 把link的代码放到这个文件里
- 授予此文件权限:
chmod a+x file.sh
- 运行:
sudo ./file.sh
这个 shell 脚本适合我。
我在使用 Ubuntu 14.04 LTS 时也遇到了这个问题。 最快的解决方案是使用 ssh 而不是 https。 以下是从 ssh 替换 https 的步骤:
在服务器上生成ssh key using ssh-keygen。
从第 1 步生成的 id_rsa.pub 文件中复制 public 密钥,并根据存储库主机将其添加到以下链接 -
比特桶 - https://bitbucket.org/account/settings/ssh-keys/
Github - https://github.com/settings/ssh/new
Gitlab - https://gitlab.com/profile/keys
现在运行以下命令从服务器命令行终端测试身份验证
比特桶
Githubssh -T git@bitbucket.org
GitLabssh -T git@github.com
ssh -T git@gitlab.com
转到 repo 目录并使用 emac 或 vi 打开 .git/config 文件
将远程“来源”url(以 https 开头)替换为以下 -
对于 Bitbucket - git@bitbucket.org:<用户名>/
.git 对于 Github - git@github.com:
/ .git 对于 Gitlab - git@gitlab.com:
/ .git
这是在 ubuntu 服务器 14 上修复此问题的解决方案。04.x
1,编辑文件:
sudo nano /etc/apt/sources.list
2、添加到文件sources.list
deb http://security.ubuntu.com/ubuntu xenial-security main
deb http://cz.archive.ubuntu.com/ubuntu xenial main universe
3、运行 命令更新和更新 CURL 到新版本
apt-get update && apt-get install curl
4、检查版本(可选):
curl -V
Response :
curl 7.47.0 (x86_64-pc-linux-gnu) libcurl/7.47.0 GnuTLS/3.4.10 zlib/1.2.8 libidn/1.28 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP UnixSockets
5、测试连接bitbucket(可选)
GIT_CURL_VERBOSE=1 git ls-remote https://bitbucket.org/
Response:
* Closing connection 0
fatal: repository 'https://bitbucket.org/' not found
大功告成。
如果您正在使用我的 Ubuntu 20.04,使用个人计算机(未配置代理),那么只需将您的 gnutls-bin
更新到最新版本
sudo apt-get install gnutls-bin
我算出来的
git config --global --unset https.proxy
git config --global --unset http.proxy
即使我尝试
git config --global --get https.proxy
git config --global --get http.proxy
没有显示任何结果,但取消设置 https.proxy 仍然有效。