【问题标题】:How do I set GIT_SSL_NO_VERIFY for specific repos only?如何仅为特定的 repos 设置 GIT_SSL_NO_VERIFY?
【发布时间】:2012-02-18 23:13:04
【问题描述】:

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

env GIT_SSL_NO_VERIFY=true git command

每次我做一个 git 操作。但我也想为其他 git 存储库启用 SSL。有没有办法将这个本地化到单个 repo 中?

【问题讨论】:

标签: git ssl


【解决方案1】:

你可以的

git config http.sslVerify "false"

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

【讨论】:

  • git config --global http.sslVerify "false"
  • 不应使用 --global ,因为 OP 已明确要求他只希望它用于特定的 repos。
  • 注意:似乎需要--global 选项,当尚未签出回购时(无法为本地尚不存在的回购设置选项)。之后可以随时将其重新打开。
  • 我回滚了编辑,因为问题没有明确要求这样做,而且出于安全原因全局禁用它是个坏主意。
  • @TanveerBadar 这是在禁用 SSL 的情况下克隆存储库的正确方法,无需全局禁用 SSL:“git -c http.sslVerify=false clone example.com/path/to/git”来自stackoverflow.com/a/11622001/1710392
【解决方案2】:

你可以这样做

对于单个回购

git config http.sslVerify false

所有回购

git config --global http.sslVerify false

【讨论】:

  • 这将禁用所有存储库的 SSL 验证。最初的问题是关于将其本地化到单个存储库。
  • 你到底为什么要使用 sudo?本地存储库不需要它,用户配置在 $HOME (无论你的系统上的什么),所以它也不需要 sudo。
  • @ParthianShot 如果他们不是管理员用户,他们如何在没有 sudo 的情况下使用它?
  • @Thirumalaimurugan 你现在是认真的吗? sudo 应该只在你真正需要 root 做某事时使用。就像安装新软件、修改重要的系统文件、重新格式化驱动器、重新配置网络、管理服务......这个家伙的问题中没有任何暗示他需要 root 才能做任何事情。如果您是管理员,您应该在大部分时间不使用 sudo 运行大部分命令(包括那些更改配置的命令)。
  • @HolaSoyEduFelizNavidad,当 OP 说“所有回购”时,OP 的意思是“该用户的所有回购”,而不是“计算机上的所有回购”。
【解决方案3】:

就像 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 deniedcould not lock global config file .gitconfig: Permission denied的情况下的好解决方案
  • 如果您在 .gitconfig 上拒绝了权限,则说明您的系统存在严重问题。您的 $HOME 应该可供您使用(这应该是 .gitconfig 的位置,不是吗?)。
  • 这实际上不是我的服务器。不过还是谢谢你。我从错误消息中删除了路径,实际上在那台服务器上 git 正试图访问 .gitconfig 某处 /var/www/...
  • 这个答案对选项也有一些很好的解释。 stackoverflow.com/a/11622001
  • 导出 GIT_SSL_NO_VERIFY=true
【解决方案4】:

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

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

    [http]
      sslVerify = false
    

【讨论】:

  • 这也不符合上面他说他不想影响其他回购的问题。
  • 当你无法运行 git 命令时它真的很有帮助! (例如,在 Windows 虚拟机上拥有 sourcetree 并将 src 文件夹放在内置 sorcetree 终端无法识别的 UNC 路径中!
  • thx,这行得通,不知何故命令行修复不起作用。
  • 对于 TortoiseGit 用户,您可以通过执行特定于上下文的设置更新并选择仅编辑本地选项来将此部分编辑到本地配置文件中
【解决方案5】:

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

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

【讨论】:

    【解决方案6】:

    对于windows,如果你想要全局配置,然后运行

    git config --global http.sslVerify false
    

    【讨论】:

    • OP 明确要求specific repos
    【解决方案7】:

    在 Linux 上,如果您在 git 存储库文件夹中调用它:

    git config http.sslVerify false
    

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

    ...
    [http]
      sslVerify = false
    

    【讨论】:

      【解决方案8】:

      有一种简单的方法可以配置 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

      【讨论】:

        【解决方案9】:

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

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

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

        要检查的命令:

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

        (如果你还在使用 git git config --global http.https://my.bad.server.sslVerify false)

        来自documentation 的解释,其中命令位于末尾,显示 .gitconfig 内容看起来像:

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

        它将忽略对此服务器的任何证书检查,无论存储库如何。

        你在the code也有一些解释

        【讨论】:

          【解决方案10】:

          这对我有用:

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

          【讨论】:

            【解决方案11】:

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

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

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

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

            然后检查你是否做的一切正确:

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

            【讨论】:

              【解决方案12】:

              还有一点,除了

              git config --global http.sslVerify false
              

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

              git clone https://5edwerwe32434lcvghjjextracgecj@github.airbus.corp/Airbus/MYX-SQL-Database.git"
              

              5edwerwe32434lcvghjjextracgecj 是在settings/Developer settings/

              下从github生成的token

              【讨论】:

                猜你喜欢
                • 2012-03-25
                • 1970-01-01
                • 1970-01-01
                • 2012-02-11
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2019-01-13
                • 2011-03-16
                相关资源
                最近更新 更多