Git 吉特;致命:对';的身份验证失败;http:…'&引用;从微软VisualStudio Team Foundation服务器
我把Ubuntu升级到了18.10(从17.10)。现在,我不能连接到我的项目的微软VisualStudio Team Foundation Server(版本16.131.27 701.1)从CLI更多。(我已经两周没有在存储库上工作了。所以我不知道在此期间服务器端是否也发生了变化。) (是的,它不是HTTPS,而是通过VPN实现的。) 不幸的是,我没能找到一个对我的处境有帮助的答案 一些研究表明:Git 吉特;致命:对';的身份验证失败;http:…'&引用;从微软VisualStudio Team Foundation服务器,git,ubuntu,tfs,http-negotiate,Git,Ubuntu,Tfs,Http Negotiate,我把Ubuntu升级到了18.10(从17.10)。现在,我不能连接到我的项目的微软VisualStudio Team Foundation Server(版本16.131.27 701.1)从CLI更多。(我已经两周没有在存储库上工作了。所以我不知道在此期间服务器端是否也发生了变化。) (是的,它不是HTTPS,而是通过VPN实现的。) 不幸的是,我没能找到一个对我的处境有帮助的答案 一些研究表明: $ GIT_CURL_VERBOSE=2 git fetch ... < WWW-Aut
$ GIT_CURL_VERBOSE=2 git fetch
...
< WWW-Authenticate: Bearer
< WWW-Authenticate: Negotiate
< WWW-Authenticate: NTLM
...
鉴于
curl --ntlm "http://NUNNI:<password>@....net:8080/tfs/AE/_git/AE-VMT"
curl--ntlm”http://NUNNI:@…净:8080/tfs/AE/_git/AE-VMT”
很好
据我所知,协商
优于NTLM
所以对我来说,在这种情况下,cURL似乎不适合协商。(据我对MS文档的理解,如果Kerberos可用,则连接应首选Kerberos,如果Kerberos不可用,则返回NTLM。)
问题:
- 如何检查服务器端或本地cURL是否不支持Kerberos
- 是否有强制git使用
NTLM
而不是协商的选项。(我在不同的stackoverflow文章中读到了一些关于HTTP/NTLM代理的内容,但当我试图将Git存储库配置为NTLM代理时,它不起作用——我真的没想到它会起作用。)
- 还有其他解决问题或获取更多详细信息的方法吗
非常感谢 如果您使用的是用户名和密码,那么显然不是使用Kerberos。使用用户名和密码进行HTTP身份验证与Kerberos是正交的
如何检查服务器端或本地cURL是否不支持Kerberos
运行klist-5fea
查看是否有Kerberos票证。如果是这样,您应该能够curl--agreement
,而无需指定用户名和密码;curl将使用Kerberos票证进行身份验证。如果您没有票证,则需要使用NTLM并使用用户名和密码,或者使用个人访问令牌(PAT)
是否有强制git使用NTLM而不是协商的选项
是的,使用用户名和密码应该显式禁用协商
还有其他解决问题或获取更多详细信息的方法吗
设置GIT\u CURL\u VERBOSE=1
和GIT\u TRACE=1
环境变量。谢谢您的回答。此外,我还发现,我错过了HTTP头中宣布的基本身份验证。cURL只在我添加--ntlm作为选项时起作用。否则,它将尝试使用返回身份验证错误的BASIC。不,我试图说服我的客户解决这个问题-(是的,我看到过这方面的报道。我认为Basic只支持个人访问令牌,而NTLM只支持域用户。我……实际上不知道如何解决这个问题。
curl --negotiate "http://NUNNI:<password>@....net:8080/tfs/AE/_git/AE-VMT"
TF400813: Resource not available for anonymous access. Client authentication required. - Microsoft Team Foundation Server
curl --ntlm "http://NUNNI:<password>@....net:8080/tfs/AE/_git/AE-VMT"