如何从公司代理后面的github克隆

Dan*_*rth 9 windows git github

我是一个非常烦人的企业代理:

  1. 使用的实际代理地址由脚本确定
  2. 它需要身份验证
  3. 它使用HTTPS 替换网页证书

如何在此方案中成功克隆github存储库?

Dan*_*rth 11

  1. 第一个问题与git没有关系 - 它更多的是能够实际配置代理的必要步骤.
    可以在控制面板 - > Internet选项 - >连接 - > LAN设置中找到Windows计算机上的代理配置.
    如果选中"使用自动配置脚本",则首先需要下载指定的文件并将其打开.我有一个包含小脚本的文件.它看起来像这样:

    function FindProxyForURL(url, host)
    {
        var myip = myIpAddress();
        var hostip = dnsResolve(host);
        if (isInNet(hostip,"192.168.0.0","255.255.0.0"))
            return "DIRECT";
        if (isInNet(hostip,"xyz.abc.0.0","255.255.0.0"))
            return PROXY special-proxy:8080;
        return "PROXY default-proxy:8080";
    }
    
    Run Code Online (Sandbox Code Playgroud)

    所以,就我而言,使用的代理是default-proxy:8080.

  2. 实际上让git使用代理,我不得不使用git config --global http.proxy http://<domain>\<username>:<password>@default-proxy:8080.

    显而易见的缺点是,您将域密码以纯文本形式存储在硬盘上.

    其他设置不起作用,虽然不同来源声称他们应该.那些是:

    1. 设置环境变量https_proxyhttp_proxyhttp://<domain>\<username>:<password>@default-proxy:8080
    2. 将全局git配置设置为该值: git config --global https.proxy http://<domain>\<username>:<password>@default-proxy:8080
    3. 将环境变量设置http_proxyhttp://<domain>\<username>:<password>@default-proxy:8080
  3. 要解决第三个问题,最简单的可能性是通过设置环境变量来忽略证书错误 - 代理返回的证书无论如何都不值得:

    set GIT_SSL_NO_VERIFY=true
    
    Run Code Online (Sandbox Code Playgroud)

要不在git config中存储普通密码,您可以使用本地代理,例如cntlm.

它允许存储密码哈希.要获取哈希,请使用以下命令:

cntlm.exe -H -d <domain> -u <username>
Run Code Online (Sandbox Code Playgroud)

之后,系统将提示您输入密码.结果将是三个哈希的列表,其中PassNTLMv2很可能是此场景中的相关哈希值.将Passwordcntlm.ini中的行替换为输出中的行,包括该PassNTLMv2部分.

显然,你现在必须配置git来使用这个本地代理.