-->

GitHub Windows client behind proxy

2019-05-13 01:35发布

我试图让GitHub的客户端的Windows工作。 我后面的企业代理和防火墙企业Win 7的64位计算机上。 以下各个岗位,并与环境变量和配置变量的多种组合试验,我发现得到的克隆和推送更新工作的唯一方法是通过使用HTTPS_PROXY环境变量,包括我的全企业域的用户ID和密码。

这是从安全角度来看不可接受的。 是否有任何其他的方式来得到这个工作?

补充说明:

以下工作:

  • 添加所谓的环境变量HTTPS_PROXY与价值http://[domain]\[userid]:[password]@someproxy.mycorp.com:8080

以下没有工作:

  • 从忽略用户ID和密码HTTPS_PROXY变量
  • 使用所谓的环境变量HTTP_PROXY (无S
  • 添加http.proxy变量全局配置文件( .gitconfig
  • 添加https.proxy varaible全球配置文件

在所有情况下,GitHub的客户端仍然不承认代理:文件的内容TheLog.txt 始终显示在启动时执行以下操作:

[time]|INFO|thread:4|GitHub.Helpers.StartupLogger|Proxy information: (None)
[time]|INFO|thread:4|GitHub.Helpers.StartupLogger|Couldn't fetch creds for proxy

并且是由几个失败的代理身份验证尝试,这些都表明了输出“凭据丢失。”

Answer 1:

这些条目添加到您的“的.gitconfig”文件在用户目录(转到%USERPROFILE%):

[http]
    proxy = http://<proxy address>:<proxy port>

[https]
    proxy = https://<proxy address>:<proxy port>

如果你不想来存储明文密码,我会用一个本地代理转发像CNTLM它允许你通过它来指挥所有的流量,并且可以存储散列密码。


[http]
    proxy = http://<username>:<password>@<proxy address>:<proxy port>

[https]
    proxy = https://<username>:<password>@<proxy address>:<proxy port>


Answer 2:

尝试了上面的一切-并没有成功,只让我的事情是CNTLM - http://cntlm.sourceforge.net/ 。

安装并运行cntlm -H,比对认证代理业公司,编辑与cntlm的输出cntlm.ini文件,重新启动Windows服务。 更新的.gitconfig有:

[https] proxy = localhost:3128
[http] proxy = localhost:3128

现在cntlm会做所有的认证,你就可以使用GitHub的(和Dropbox,顺便说一句)背后的总公司代理。 至少要等到下次更改密码:)(比再做cntlm -H的东西)



Answer 3:

我能够做的GitHub壳牌与我们的企业代理工作。 我开始GitHub的shell并执行以下命令:

export http_proxy=http://<username>:<password>@<corporate proxy>:3128

我真的很想让GUI工作过。 但我不希望设置其中包含我的企业凭证信息Windows全局环境变量。

奇怪的是GitHub的GUI客户端是能够连接到GitHub上进行用户身份验证,但唯一的问题是与克隆,拉动和从进入GitHub上推的项目。 这似乎是问题是使用Git实现。 我就能够配置的git通过我们代理运行没有把我的凭据在git的全局设置和它要求我的凭据在进行拉或推请求。 但这也仅仅是在Git的壳牌工作。



Answer 4:

如果你在公司使用GitHub上的Windows,机会是很高,你是后面的大利空的企业防火墙/代理服务器。 GitHub上的Windows还没有在其GUI代理参数设置选项。

要配置的GitHub的Windows使用贵公司的代理,编辑发现,通常在C的.gitconfig文件:\ Users \用户的.gitconfig或C:\文件和设置\的.gitconfig

关闭GitHub上的Windows; 在的.gitconfig,只需添加

[HTTPS]代理= proxy.yourcompany.com:port



Answer 5:

我也碰到这个问题,并试图挖掘到了一点,以及(拆卸客户端)。

产生我们所看到的日志消息的代码如下:

private static void LogProxyServerConfiguration()
{
    WebProxy defaultProxy = WebProxy.GetDefaultProxy();
    string str = defaultProxy.Address != (Uri)null ? defaultProxy.Address.ToString() : "(None)";
    StartupLogger.log.Info((IFormatProvider)CultureInfo.InvariantCulture, "Proxy information: {0}", str);
    try
    {
        if (defaultProxy.Credentials == null)
        {
            StartupLogger.log.Info((IFormatProvider)CultureInfo.InvariantCulture, "Couldn't fetch creds for proxy", new object[0]);
        }
        else
        {
            NetworkCredential credential = defaultProxy.Credentials.GetCredential(GitHubClient.GitHubDotComUri, "Basic");
            StartupLogger.log.Info((IFormatProvider)CultureInfo.InvariantCulture, "Proxy is authenticated: {0}", credential != null && !string.IsNullOrWhiteSpace(credential.UserName));
        }
    }
    catch (Exception ex)
    {
        StartupLogger.log.InfoException("Couldn't fetch creds for proxy", ex);
    }
}

所以这个块仅记录的设置在IE代理信息。 出现在日志消息,对我们有什么在配置文件或环境变量的设置没有影响。



Answer 6:

我不知道你的防火墙,但我的校园使用代理

你使用任何混帐贵? 编辑 :只注意到你正在使用github上的Windows客户端

我使用tortoisegit和其非常容易设置代理。 只要右击任何地方,tortoisegit>网络,启用代理服务器,并设置服务器地址,用户名和密码。 DONE

据我记得,tortoisegit也将工作外的开箱即用的github上。



Answer 7:

这里是设置在github上代理的方式

git config --global http.proxy http://<username>:<pass>@<ip>:<port>
git config --global https.proxy http://<username>:<pass>@<ip>:<port>

在这里,在我的大学,我们没有用户名和密码,因此,如果我们的大学IP是172.16.10.10和端口是8080

git config --global http.proxy http://172.16.10.10:8080
git config --global https.proxy http://172.16.10.10:8080

PS - >我会建议使用此方法来设置代理的事情会落入地方,你将进一步学习
资源



Answer 8:

我发现这个博客是有用的。 它描述ntlmaps代理。 这可能不太安全,但工作顺利。 我不能让cntlm工作。



Answer 9:

对于我们来说,解决方案涉及两个不同的东西。 首先,在Sogger的答案所述,您需要将条目添加到您.gitconfig文件位于%USERPROFILE%

[http]
    proxy = http://<proxy address>:<proxy port>

[https]
    proxy = https://<proxy address>:<proxy port>

第二,(这是我们缺失的环节),你需要在代理服务器上配置一个例外,允许非认证代理流量*.github.com

在iPrism,它看起来像这样:

这个问题是没有这么多的代理,而认证 。 绕过认证要求允许所需的通信克隆和使用GitHub的桌面客户端项目。

另外请注意,这种方法并不需要存储代理证书 .gitconfig文件。



文章来源: GitHub Windows client behind proxy