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_PROXY
variables的用户名和密码 - 使用名为
HTTP_PROXY
(无S
)的环境variables - 将
http.proxy
variables添加到全局configuration文件(.gitconfig
) - 将
https.proxy
variables添加到全局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
文件中存储代理凭证 。