如何仅为特定的回购设置GIT_SSL_NO_VERIFY?

Cha*_*all 254 git ssl

我必须使用没有适当证书的git服务器,但我不想这样做

env GIT_SSL_NO_VERIFY=true git command
Run Code Online (Sandbox Code Playgroud)

每次我做一个git操作.但我还想为其他git存储库启用SSL.有没有办法让这个本地的单一回购?

Joa*_*son 469

要全局设置,您可以这样做

git config http.sslVerify false
Run Code Online (Sandbox Code Playgroud)

要仅为项目设置它,请转到git项目文件夹root并运行

git config http.sslVerify false
Run Code Online (Sandbox Code Playgroud)

在您的特定仓库中,仅禁用该仓库的SSL证书检查.

  • git config --global http.sslVerify"false" (37认同)
  • 不应该使用--global,因为OP特别要求他只想要特定的回购. (16认同)
  • @TanveerBadar这是在禁用SSL的情况下克隆存储库的正确方法,无需全局禁用SSL:“git -c http.sslVerify = false克隆https://example.com/path/to/git”来自https ://stackoverflow.com/a/11622001/1710392 (15认同)
  • 注意:当尚未检出repo时,似乎需要`--global`选项(不能为本地不存在的repo设置选项).人们总是可以在之后重新打开它. (8认同)
  • 因此,我的评论不是OP的答案,而是评论.为什么?我总是自己谷歌并猜测我降落的地方,我需要它全球化.这个选项是自我解释的,所以如果不需要,可以省略一点大脑. (7认同)
  • 我回滚了该编辑,因为该问题专门不要求这样做,并且出于安全原因而全局禁用此功能是一个坏主意。 (2认同)
  • 出于与上述相同的原因,我再次回滚了编辑。这个问题是关于一个特定的回购。如果您想要所有回购的答案,那应该是一个单独的问题。 (2认同)

Thi*_*gan 100

你可以这样做

对于单个回购

git config http.sslVerify false
Run Code Online (Sandbox Code Playgroud)

对于所有回购

git config --global http.sslVerify false
Run Code Online (Sandbox Code Playgroud)

  • 这将禁用所有存储库的SSL验证.最初的问题是将其置于单个存储库的本地. (6认同)
  • 我不会在sudo中使用这个命令,即使是所有的回购. (6认同)
  • 为什么你在世界上使用sudo呢?本地存储库不需要它,用户配置在$ HOME(系统上的任何内容),因此它也不需要sudo. (4认同)
  • @HolaSoyEduFelizNavidad,当 OP 说“对于所有存储库”时,OP 的意思是“该用户的所有存储库”,而不是“计算机上的所有存储库”。 (2认同)

mce*_*epl 92

就像Thirumalai所说的那样,但是克隆的存储库里面没有--global.也就是说,

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

  • 也有效:`git -c http.sslVerify = false clone https:// url`而不是第1步 (23认同)
  • 导出 GIT_SSL_NO_VERIFY=true (3认同)

Ham*_*yed 14

除此以外还有一点

git config --global http.sslVerify false
Run Code Online (Sandbox Code Playgroud)

只需将 SSL 验证设置为 false,您还必须拥有克隆存储库的密钥。像这样的东西

git clone https://5edwerwe32434lcvghjjextracgecj@github.com/myorg/MYpro.git"
Run Code Online (Sandbox Code Playgroud)

5edwerwe32434lcvghjjextracgecj 是在github的settings/ Developer settings/下生成的token


sha*_*nth 11

如果您使用的是Windows计算机并安装了Git,则可以尝试以下步骤:

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

    [http]
      sslVerify = false
    
    Run Code Online (Sandbox Code Playgroud)


Mat*_*t M 11

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

git config --bool --add http.https://my.bad.server.sslverify false
Run Code Online (Sandbox Code Playgroud)

这会将其添加到您的用户配置中。

检查命令:

git config --bool --get-urlmatch http.sslverify https://my.bad.server 
Run Code Online (Sandbox Code Playgroud)

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

命令末尾的文档说明,显示 .gitconfig内容如下:

[http "https://my.bad.server"]
        sslVerify = false
Run Code Online (Sandbox Code Playgroud)

无论存储库是什么,它都会忽略对该服务器的任何证书检查。

你在代码中也有一些解释


小智 9

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

GIT_SSL_NO_VERIFY=true git clone --recursive https://github.com/xx/xx.git
Run Code Online (Sandbox Code Playgroud)


Mat*_*s B 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
Run Code Online (Sandbox Code Playgroud)

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

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


mre*_*dia 5

这个问题不断出现,我还没有找到令人满意的结果,所以这对我有用(基于之前的答案/sf/answers/3689445371/,它不起作用):

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

首先运行git config --system --edit(从提升的命令提示符,更改--system--global如果您只想为您的用户执行此操作),然后在之前的任何[http]部分之后插入以下代码段:

[http "https://gitlab.dev"]
        sslVerify = false
Run Code Online (Sandbox Code Playgroud)

然后检查您是否正确执行了所有操作:

> git config --type=bool --get-urlmatch http.sslVerify https://gitlab.dev
false
Run Code Online (Sandbox Code Playgroud)