我正在尝试从一个需要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总是使用代理的基本身份验证。 如果您的代理需要其他内容,例如 Windows 网络的 NTLM,则有问题。Curl用于处理所有http传输细节,因此支持NTLM身份验证方法,但我不知道如何向Curl传递必要的选项。Git通过其库绑定使用Curl,因此仅替换curl可执行文件并不足够。
我知道有关Git配置中core.gitproxy
选项的信息,但似乎仅适用于git://协议。同样,http.proxy
选项设置了代理地址,但没有提供一种方法来向curl提供适当的选项。
github.com
到你自己的机器,并使其充当透明代理,然后使用正确的身份验证转发到NTLM代理。但是此时,更容易的方法是设置VPN并通过它路由流量到github.com。 - Artefactocurl_easy_setopt(handle, CURLOPT_PROXYAUTH, CURLAUTH_NTLM)
与代理身份验证的其他常规选项(CURLOPT_PROXY
,CURLOPT_PROXY_TYPE
和CURLOPT_PROXYUSERPWD
)一起使用的问题。 - Artefacto