本地提交代码后推送GitHub遇SSL错误,请求排查根因
Git推送GitHub时SSL解密错误的排查与解决
我来帮你搞定这个困扰你的Git推送错误!结合你用的Git 2.16.3版本和MacOS High Sierra系统,咱们先拆解根本原因,再一步步解决:
根本原因
这个tlsv1 alert decrypt error错误大概率是以下两个核心问题导致的:
- Git版本过旧:你的Git 2.16.3是2018年的老版本,而GitHub早在几年前就停用了TLS 1.0/1.1,只支持TLS 1.2及以上。旧版本Git默认可能还在使用已被弃用的TLS协议,导致SSL握手时解密失败。
- 不完整的.gitconfig配置:你提供的.gitconfig里
[http]部分不完整,可能存在残留的错误配置,干扰了SSL连接的正常建立。
另外还要提一句:你仓库URL里的NodeJS- programs.git有个多余空格,建议确认是不是拼写错误,虽然这不是SSL错误的直接原因,但也可能引发其他推送问题。
具体解决步骤
1. 优先更新Git到最新版本
这是最有效的解决方法,新版本Git会默认支持TLS 1.2+,同时自带更新的SSL库:
- 如果你的Mac装了Homebrew,直接在终端运行:
brew upgrade git - 没装Homebrew的话,直接下载Git官方Mac安装包安装即可。
- 安装完成后验证版本:
确保版本更新到2.20以上(最好是最新稳定版)。git --version
2. 修复.gitconfig的HTTP配置
先备份你的原配置文件,避免误改:
cp ~/.gitconfig ~/.gitconfig.backup
然后用vim编辑.gitconfig:
vim ~/.gitconfig
把不完整的[http]部分修改成强制使用TLS 1.2的配置:
[user] email = anand@gmail.com name = anandg112 [core] editor = vim [http] sslVersion = tlsv1.2
如果不需要特殊HTTP配置,也可以直接删除[http]整个区块,让Git使用默认设置。
3. 验证SSL连接是否正常
先确保SSL验证功能开启:
git config --global http.sslVerify true
然后测试和GitHub仓库的连接:
git ls-remote https://github.com/anandg112/NodeJS-programs.git
如果能返回仓库的分支和提交ID,说明连接已经正常,此时再尝试推送即可。
4. (可选)检查系统SSL库版本
如果更新Git后还是有问题,可以检查Mac的OpenSSL版本:
openssl version
如果版本低于1.0.2,建议更新OpenSSL(不过一般更新Git后会自带适配的SSL库,这一步通常不需要)。
内容的提问来源于stack exchange,提问作者anandg112




