如何仅为特定存储库设置GIT_SSL_NO_VERIFY?


Answers:


539

你可以做

git config http.sslVerify false

在您的特定存储库中禁用该存储库的SSL证书检查。


54
git config --global http.sslVerify“ false”
roothahn

24
不应该使用--global,因为OP明确要求他仅将其用于特定的存储库。
Kannan Ekanath'9

9
注意:--global当尚未签出某个存储库时,似乎需要该选项(无法为本地尚不存在的存储库设置选项)。之后,您始终可以将其重新打开。
詹姆斯·威尔金斯

2
我回滚了该编辑,因为该问题专门不要求这样做,而且出于安全原因而全局禁用它是一个坏主意。
艾蒂安

2
出于与上述相同的原因,我再次回滚了编辑。这个问题是关于一个特定的回购。如果您想要所有回购的答案,那应该是一个单独的问题。
Calimo

121

你可以做如下

对于单个回购

git config http.sslVerify false

对于所有回购

git config --global http.sslVerify false

7
这将禁用所有存储库的SSL验证。最初的问题是关于使其本地化到单个存储库。
Gwynne Raskind 2013年

4
为什么在世界上您根本使用sudo?本地存储库不需要它,并且用户配置位于$ HOME(无论您的系统上是什么)中,因此也不需要sudo。
mcepl

@ParthianShot,如果他们不是管理员用户,如何在不使用sudo的情况下使用它?
Thirumalai murugan'2

1
@Thirumalaimurugan您现在认真了吗?sudo仅在您真正需要root才能做某事时才使用。就像安装新软件,修改重要的系统文件,重新格式化驱动器,重新配置网络,管理服务……这个人的问题并不意味着他需要root才能做任何事情。如果您是管理员,则应该在大多数时间运行大多数命令(包括那些会更改配置的命令),而无需使用sudo。
Parthian Shot '02

1
@HolaSoyEduFelizNavidad,当OP表示“针对所有存储库”时,OP表示“该用户的所有存储库”,而不是“计算机上的所有存储库”。
vy32

98

就像Thirumalai所说的一样,但是在克隆的存储库中并且没有--global。即

  1. GIT_SSL_NO_VERIFY=true git clone https://url
  2. cd <directory-of-the-clone>
  3. git config http.sslVerify false

当您could not lock global config file .gitconfig: Permission denied
遇到问题

1
如果您对.gitconfig的权限被拒绝,则系统中存在一些严重问题。$ HOME应该对您可用(.gitconfig应该在哪里,不是吗?)。
mcepl

这实际上不是我的服务器。但是还是谢谢你。我从错误消息中删除了路径,实际上是在该服务器上git试图访问.gitconfig中的某个位置/var/www/...
antongorodezkiy 2015年

这个答案对选项也有一些很好的解释。stackoverflow.com/a/11622001
dragon788

2
export GIT_SSL_NO_VERIFY = true
ETech

11

特别是如果您需要递归克隆

GIT_SSL_NO_VERIFY=true git clone --recursive https://github.com/xx/xx.git

10

如果您在Windows计算机上并安装了Git,则可以尝试以下步骤:

  1. 转到Git安装文件夹,例如:C:\ Program Files(x86)\ Git \ etc
  2. 编辑文件:gitconfig
  3. [http]部分下,添加以下行:sslVerify = false

    [http]
      sslVerify = false
    

1
这也不符合上面的问题,他说他不想影响其他回购协议。
bryanmac

当您不能运行git命令时,这真的很有帮助!(例如,在Windows虚拟机上具有sourcetree,并将src文件夹放置在无法识别内置sorcetree终端的UNC路径中!
danrah 2015年

1
谢谢,这行得通,以某种方式命令行修复不起作用。
Nrj

对于TortoiseGit用户,您可以通过执行特定于上下文的“设置”更新并选择“仅编辑本地”选项来将此部分编辑到本地配置文件中
Steve Townsend

5

有一种简单的方法可以将GIT配置为以正确的方式处理服务器。只需为您的git服务器添加特定的http部分,然后指定要信任的证书(Base64编码):

〜/ .gitconfig

[http "https://repo.your-server.com"]
# windows path use double back slashes
#  sslCaInfo = C:\\Users\\<user>\\repo.your-server.com.cer
# unix path to certificate (Base64 encoded)
sslCaInfo = /home/<user>/repo.your-server.com.cer

这样,您将不再有SSL错误并验证(通常是)自签名证书。这是最好的方法,因为它可以保护您免受中间人攻击。仅禁用ssl验证时,您很容易受到此类攻击。

https://git-scm.com/docs/git-config#git-config-httplturlgt


5

如果必须为托管多个存储库的一台git服务器禁用SSL检查,则可以运行:

git config --bool --get-urlmatch http.sslverify https://my.bad.server false

(如果您仍然使用git <v1.8.5,请运行git config --global http.https://my.bad.server.sslVerify false

文档位于命令末尾的说明中,其 .gitconfig内容如下所示:

[http "https://my.bad.server"]
        sslVerify = false

无论存储库是什么,它将忽略对此服务器的所有证书检查。

您在代码中也有一些解释


4

这对我有用:

git init
git config --global http.sslVerify false
git clone https://myurl/myrepo.git

2

这个问题不断出现,我还没有找到满意的结果,所以这对我有用(基于先前的答案https://stackoverflow.com/a/52706362/1806760,该按钮不起作用):

我的服务器https://gitlab.dev带有自签名证书。

第一次运行git config --system --edit(在提升权限的命令提示符下,如果只想为用户使用,请更改--system--global),然后在前面的任何[http]部分之后插入以下代码段:

[http "https://gitlab.dev"]
        sslVerify = false

然后检查您是否正确完成了所有操作:

> git config --type=bool --get-urlmatch http.sslVerify https://gitlab.dev
false

1

对于Windows,如果要全局配置,请运行

git config --global http.sslVerify false

specific repos
行动党

0

在Linux上,如果您在git repository文件夹中调用此命令:

git config http.sslVerify false

如果您想使用以下方式手动添加sslVerify = false,这将添加[http]config文件.git夹中文件的该部分中,这也可以作为解决方案nano .git/config

...
[http]
  sslVerify = false
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.