GitHub Windows客户端后面的代理

我试图让GitHub客户端的Windows工作。 我在企业代理和防火墙背后的企业Win 7 x64计算机上。 继各种其他职位,并试验环境variables和configurationvariables的多种组合我发现克隆和推动更新工作的唯一方法是使用HTTPS_PROXY环境variables,包括我的完整的企业域用户ID和密码。

从安全angular度来看这是不可接受的。 有没有其他的方法来使这个工作?

补充笔记:

以下工作:

  • 使用值http://[domain]\[userid]:[password]@someproxy.mycorp.com:8080添加名为HTTPS_PROXY的环境variableshttp://[domain]\[userid]:[password]@someproxy.mycorp.com:8080

以下不起作用:

  • 省略HTTPS_PROXYvariables的用户名和密码
  • 使用名为HTTP_PROXY (无S )的环境variables
  • http.proxyvariables添加到全局configuration文件( .gitconfig
  • https.proxyvariables添加到全局configuration文件

在所有情况下,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 

接着是几个失败的代理validation尝试的输出,所有这些尝试都显示“凭证缺失”。

将这些委托给您的用户目录中的“.gitconfig”文件(转到%USERPROFILE%):

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

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


不像原来的问题, 如果你不在乎你的密码是纯文本的

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

试过以上的一切 – 并没有成功,只有帮助我的是CNTLM – http://cntlm.sourceforge.net/

安装并运行cntlm -H,然后validationcorp代理,用cntlm的输出编辑cntlm.ini文件,重新启动windows服务。 使用以下命令更新.gitconfig:

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

现在cntlm将完成所有的身份validation,并且可以在corp代理之后使用GitHub(和Dropbox,btw)。 至less直到下一个密码更改:)(比再次cntlm -H的东西)

我能够让GitHub Shell与我们的公司代理合作。 我正在启动GitHub Shell并执行以下命令:

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

我真的想让GUI也能工作。 但是我不想设置包含我公司证书信息的Windows全局环境variables。

奇怪的GitHub GUI客户端能够连接到GitHub进行用户身份validation,但唯一的问题是克隆,将项目从GitHub中拖放到项目中。 这似乎是与git实现的问题。 我能够configurationgit通过我们的代理运行,而无需将我的凭据放在git全局设置中,并在执行pull或push请求时请求我的凭据。 但那只是在Git Shell中工作。

如果你在企业中使用Windows的GitHub,那么很可能是你在一个糟糕的企业防火墙/代理服务器之后。 GitHub for Windows在其GUI中还没有用于设置选项的代理参数。

要将GitHub for Windowsconfiguration为使用公司代理,请编辑通常位于C:\ Users \ .gitconfig或C:\ Documents&Settings \ .gitconfig中的.gitconfig文件

closuresWindows的GitHub; 在.gitconfig中,只需添加

[https] proxy = proxy.yourcompany.com:port

我也遇到了这个问题,并试图挖掘一下(反汇编客户端)。

生成日志消息的代码片段如下所示:

 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); } } 

所以这个块只logging在IE中设置的代理信息。 日志消息似乎与我们在configuration文件或环境variables中设置的内容没有关系。

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

你使用任何git gui? 编辑 :只注意到你正在使用github客户端的窗口

我正在使用tortoisegit,它很容易设置代理。 只需右键单击任意位置,tortoisegit> network,启用代理服务器并设置服务器地址,用户名和密码。 DONE

据我所知,tortoisegit也可以用github开箱即用。

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

对我们来说,解决scheme涉及两个不同的事情。 首先,如Sogger的回答中所述,您需要将条目添加到位于%USERPROFILE% .gitconfig文件中。

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

其次,(这是我们缺失的一部分),您需要在代理服务器上configuration一个例外,以允许未经身份validation的代理stream量到*.github.com

在iPrism中,它看起来像这样: 在这里输入图像说明

问题不在于代理,而在于authentication 。 绕过authentication要求允许所需的通信使用GitHub桌面客户端克隆和处理项目。

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