【问题标题】:git fatal error: Unsupported SSL backend 'schannel'git 致命错误:不支持的 SSL 后端“通道”
【发布时间】:2021-05-21 02:09:56
【问题描述】:

尝试使用规范的git 访问 git-bash 准备好的 git repo,我得到了:

$ git pull
fatal: Unsupported SSL backend 'schannel'. Supported SSL backends:
        gnutls

按照Using Git Bash under WSL,我已经完成git config http.sslBackend openssl

$ git config http.sslBackend 
openssl

$ git config --global http.sslBackend
openssl

按照提示from reddit,我已经完成了:

sudo apt install -y gnutls-bin

# and here are my installed packages:
ii gnutls-bin  amd64 GNU TLS library - commandline utilities
ii libcurl3-gnutls:amd64  amd64 easy-to-use client-side URL transfer library (GnuTLS flavour)
ii libgnutls-dane0:amd64  amd64 GNU TLS library - DANE security support
ii libgnutls30:amd64  amd64 GNU TLS library - main runtime library

我还缺少什么?

$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 10 (buster)
Release:        10
Codename:       buster

在 Windows WSL 中运行。

附言。经过以上所有调整,git-bash 仍然可以 pull 这个 git repo 就好了,所以我猜 SSL backend 'schannel' 是在这个 repo 的其他地方配置的。

PPS。发现它与 "git-bashprepared git repo" 无关,因为即使克隆一个新的也会给我完全相同的错误。

这是我的git config --show-origin -l 输出,如果我需要包含更多内容,请告诉我:

$ git config --show-origin -l | grep -E 'ssl|http'
file:/home/me/.gitconfig        http.sslbackend=openssl
file:.git/config        http.sslverify=false
file:.git/config        http.sslbackend=openssl
file:.git/config        http.emptyauth=true
file:.git/config        remote.origin.url=http://xxx:8080/tfs/DefaultCollection/xxx
file:.git/config        lfs.http://xxx:8080/tfs/DefaultCollection/xxx/info/lfs.access=ntlm

【问题讨论】:

  • 您能否编辑您的问题以包含git config --show-origin -l 的输出?
  • 我们正在寻找与http.sslBackend相关的任何内容。

标签: git configuration windows-subsystem-for-linux


【解决方案1】:

一般来说,http.sslBackend 选项只能在 Windows 上使用。大多数 Linux 发行版不提供它作为选项,因为它们不使用多个 TLS 库进行编译。

正确的解决方案是删除所有http.sslBackend 选项:

$ git config --unset-all http.sslBackend

如果您出于某种原因必须使用 OpenSSL,则需要自己编译。大多数 Linux 发行版都被法律禁止在 GPLv2 下分发与 OpenSSL 相关联的 Git,因此它们通常不会这样做。

【讨论】:

  • 只是 FTA,git config --unset-all http.sslBackend 不知何故无法删除 ~/.gitconfig 中的条目。自己手动删除后,现在一切正常。谢谢你,先生。
【解决方案2】:

由于@bk2204 提供的解决方案对我不起作用,我尝试手动将其更改为“gnutls”值并且它起作用了。

1- 我尝试了@bk2204 修复,但它对我不起作用。

git config --unset-all http.sslBackend

2- 尝试将 http.sslBackend 设置为“openssl”

git config --global http.sslBackend "openssl"

没有

3- "如果 cmd 建议使用 gnutls,为什么不使用它?

git config --global http.sslBackend "gnutls" 也不行

4- 手动更改!

cmd: vim ~/.gitconfig 将http sslBackend的值替换为gnutls

塔达!

.gitconfig 结果

[http]
        sslBackend = gnutls

【讨论】:

    猜你喜欢
    • 2019-05-28
    • 2016-05-04
    • 2012-10-07
    • 1970-01-01
    • 2015-07-06
    • 1970-01-01
    • 2019-02-02
    • 2015-12-24
    • 1970-01-01
    相关资源
    最近更新 更多