我试图让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