我正在尝试从需要NTLM身份验证的代理后面的Windows机器访问Github上的存储库。 SSH和git://协议都不是直接可用的,所以我试图通过代理使用HTTPS来实现这一点。
在NTLM proxy without password?的帮助下,我已经能够使用msysgit提供的curl
二进制文件与代理一起使用了:
curl -U : --proxy-ntlm --proxy xxx.xxx.xx.xx:8080 https://github.com
这是成功的并返回Github主页。
然而,我发现2010年2月Proxying Git的一篇文章(强调我的):
不幸的是,curl似乎总是对代理使用基本身份验证。如果您的代理需要其他东西,也许 NTLM用于Windows网络,则您遇到问题。 Curl用于处理所有http传输细节,这确实支持NTLM身份验证方法,但我知道没有方法可以将必要的选项传递给curl。 Git通过其库绑定使用curl,因此不应该只使用包装脚本替换curl可执行文件。
我知道Git配置中的core.gitproxy
选项,但似乎只适用于git://协议。同样,http.proxy
选项设置代理的地址,但无法提供适当的卷曲选项。
答案 0 :(得分:15)
试试Cntlm。它是一个代理,设计用于不理解NTLM的程序(例如Git)和需要NTLM的代理。它执行NTLM身份验证,以便应用程序不必。
我没有用它,所以我不知道它的效果如何。
答案 1 :(得分:5)
我使用了CNTLM身份验证代理(尽管这很可能也适用于ntlmaps),因此git可以正常工作,并将http和https代理添加为http:// localhost:3218
。 Git需要很长时间才能执行任何远程操作,如获取,拉取或克隆。
对此的修复是切换为使用此代码:http:// 127.0.0.1:3218
在.gitconfig中更改后,它运行得更快。
注意:删除http://和127.0.0.1之间的空格
例如:
[http]
proxy = http:// 127.0.0.1:3128
[https]
proxy = http:// 127.0.0.1:3128
答案 2 :(得分:3)
感谢@ richard-hansen指出Cntlm。它为Windows代理提供了一个非Windows适配器。井井有条。
以下是对我有用的确切步骤:
cntlm -I -M http://google.com
。net start cntlm
git config --global http.proxy 127.0.0.1:3128
答案 3 :(得分:1)
使用mysysgit 1.9.5(或者也许是早期版本,但未经测试),您可以在不在磁盘上的纯文本配置文件中嵌入用户名和密码的情况下执行此操作。
git client using GSSAPI for NTLM proxy authentication
这不需要cntlm。
答案 4 :(得分:0)
选项http.proxy
对于Windows上的NTLM代理非常有用,请在类似的问题中检查我的以下答案: