在Windows上配置Git以使用NTLM代理身份验证

时间:2011-02-20 22:14:11

标签: git proxy ntlm msysgit

我正在尝试从需要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选项设置代理的地址,但无法提供适当的卷曲选项。

5 个答案:

答案 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适配器。井井有条。

以下是对我有用的确切步骤:

  1. 下载并安装Cntlm for windows。
  2. 打开Cntlm.ini(它位于安装文件夹中。)
  3. 更新用户名,域名。保存它。
  4. 从命令行运行cntlm -I -M http://google.com
  5. Cntlm将询问您将用于代理服务器的密码。给它。 (很可能是你的Windows密码)
  6. Cntlm将识别身份验证方法并生成密钥。拿起那个结果。 (例如NTLMv2 77B9081511704EE852F94227CF48A793)
  7. 使用此信息更新Cntlm.ini。 (取消注释适当的身份验证并更新密钥)
  8. 保存并关闭。
  9. 现在您需要启动Cntlm代理服务器。 net start cntlm
  10. 现在使用Cntlm代理信息更新应用程序。对于Cntlm,它是127.0.0.1:3128(此信息在ini文件中。如果你想要它不同,那就改变它)。如果是git git config --global http.proxy 127.0.0.1:3128
  11. git现在可以通过代理正常工作。
  12. 祝你好运!精心设计步骤here

答案 3 :(得分:1)

使用mysysgit 1.9.5(或者也许是早期版本,但未经测试),您可以在不在磁盘上的纯文本配置文件中嵌入用户名和密码的情况下执行此操作。

git client using GSSAPI for NTLM proxy authentication

这不需要cntlm。

答案 4 :(得分:0)

选项http.proxy对于Windows上的NTLM代理非常有用,请在类似的问题中检查我的以下答案:

https://stackoverflow.com/a/10848870/352672