私有GitLab启用HTTPS客户端认证时Git LFS推送失败如何解决
可用解决方案(均无需修改服务端、清理Git历史或使用VPN)
方案1:配置Git/Git LFS使用HTTPS客户端证书
Git和Git LFS原生支持HTTPS客户端证书认证,直接在本地配置即可:
- 先将你浏览器中安装的客户端证书导出为PEM/PFX/P12格式,若证书设置了访问密码请提前留存
- 进入项目目录执行以下命令(为项目级配置,不影响其他仓库使用):
# 替换为你的客户端证书实际存放路径 git config http.sslCert "~/local/path/your-client-cert.pem" # 若证书有密码,添加以下配置,不配的话每次推送会手动提示输入密码 git config http.sslCertPassword "你的证书访问密码" # 若你的GitLab使用自签名HTTPS证书,补充配置CA根证书路径避免信任报错 git config http.sslCAInfo "~/local/path/your-ca-root-cert.pem"
- 若仍出现gnutls_handshake相关报错,可将Git的HTTP传输后端切换为openssl:
git config http.sslBackend "openssl"
配置完成后直接重试git push即可。
方案2:强制Git LFS走SSH传输,完全绕过HTTPS
Git LFS 2.4.0及以上版本原生支持SSH传输,GitLab服务端默认开启该能力,配置后LFS会和普通Git代码一样走SSH协议传输:
- 进入项目目录执行以下命令:
# 强制该仓库对应gitlab远程的LFS走SSH协议 git config lfs.git@git.myserver.com:coolguy/my-software.access ssh # 可选,直接指定LFS的SSH访问地址 git config lfs.url "ssh://git@git.myserver.com/coolguy/my-software.git/info/lfs"
配置完成后重试推送即可,全程不需要处理HTTPS客户端证书相关逻辑。
如果需要以上配置全局生效,在命令后添加--global参数即可。
内容的提问来源于stack exchange,提问作者user16978892
相关产品推荐
相关产品推荐

