安装TFS 2017构建代理的问题

4
我有一个单独的TFS 2017 RTM服务器,安装在SQL Express上。它不在任何域中,而是在我的笔记本电脑上。我为自己的使用(也是为了学习)启动了它。设置了一个自签名证书来运行SSL。
考虑在同一台机器上设置vNext构建代理。我记得我的大脑中某个地方说过构建机器不应该在TFS应用程序层中,以减少表面攻击。好吧,现在我并不真的关心表面攻击。但我需要一个工作的TFS和构建设置。
在输入URL(https URL)后进行配置时,我会提示选择身份验证类型。我键入Negotiate。输入凭据后,我收到以下错误信息。
TF400813: Resource not available for anonymous access. Client authentication required.

当我使用“Integrated”进行身份验证时,出现以下错误。
An error occurred while sending the request.
Failed to connect.  Try again or ctrl-c to quit

当我使用http网站的URL时,无论是哪种身份验证类型,都会出现以下错误。
Connecting to server ...
Found
Failed to connect.  Try again or ctrl-c to quit

我能够ping通我的网址。

以下是来自 _diag 文件夹的错误日志。

[2016-11-23 19:53:40Z INFO CredentialManager] Creating type Integrated
[2016-11-23 19:53:40Z INFO CredentialManager] Creating credential type: Integrated
[2016-11-23 19:53:40Z INFO IntegratedCredential] GetVssCredentials
[2016-11-23 19:53:40Z INFO ConfigurationManager] cred retrieved
[2016-11-23 19:53:40Z INFO Terminal] WRITE LINE: Connecting to server ...
[2016-11-23 19:53:41Z INFO CommandSettings] Flag 'unattended': 'False'
[2016-11-23 19:53:41Z ERR  Terminal] WRITE ERROR (exception):
[2016-11-23 19:53:41Z ERR  Terminal] Microsoft.VisualStudio.Services.WebApi.VssServiceResponseException: Found
   at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.HandleResponse(HttpResponseMessage response)
   at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.<SendAsync>d__45.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
   at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.<SendAsync>d__42`1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
   at Microsoft.VisualStudio.Services.Location.Client.LocationHttpClient.<GetConnectionDataAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
   at Microsoft.VisualStudio.Services.WebApi.Location.VssServerDataProvider.<ConnectAsync>d__41.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.VisualStudio.Services.Agent.AgentServer.<ConnectAsync>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.VisualStudio.Services.Agent.Listener.Configuration.ConfigurationManager.<TestConnectAsync>d__10.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.VisualStudio.Services.Agent.Listener.Configuration.ConfigurationManager.<ConfigureAsync>d__7.MoveNext()

你能从 Web 访问中访问 TFS 吗? - Cece Dong - MSFT
是的 - 我可以从网络访问它。 - Baskar Lingam Ramachandran
3个回答

0

尝试使用PAT作为身份验证类型,并从个人资料菜单中的安全页面获取个人访问令牌。使用所选范围-代理池(读取、管理)

请参见http://go.microsoft.com/fwlink/?LinkID=825113

个人访问令牌用于注册代理。最后一步是提供代理服务的凭据。


我尝试了这个,但是出现了以下错误.. System.Net.Http.HttpRequestException: 发送请求时发生错误。---> System.Net.Http.WinHttpException: 参数不正确 在 System.Net.Http.WinHttpAuthHelper.SetWinHttpCredential(SafeWinHttpHandle requestHandle, ICredentials credentials, Uri uri, UInt32 authScheme, UInt32 authTarget) 在 System.Net.Http.WinHttpAuthHelper.CheckResponseForAuthentication(WinHttpRequestState state, UInt32& proxyAuthScheme, UInt32& serverAuthScheme) 在 System.Net.Http.WinHttpHandler.<StartRequest>d__101.MoveNext() - Baskar Lingam Ramachandran
在配置代理的哪个步骤中出现了这个错误?似乎是与 TFS 的身份验证有关的一般性问题。 - Remko van Ginneken
我可以在网页中打开TFS。但是,在配置时,当我提供TFS URL后,出现了错误。 - Baskar Lingam Ramachandran

0

尝试禁用匿名身份验证并启用 Windows 身份验证以用于您的 TFS。

由于您为自己使用设置了 TFS,因此可以考虑使用Visual Studio Team Service而不是本地 TFS。VSTS 对于 5 个用户是免费的。


当然,它在我的笔记本电脑上。所以我会在几天内完成并告诉你。 - Baskar Lingam Ramachandran
我的Win 10版本是“Windows 10 Home Single Language”,根据这个页面,我需要拥有专业版或企业版。如果没有Windows身份验证,我无法继续进行构建设置?不过,我可以从同一台机器上为VSTS设置一个构建! - Baskar Lingam Ramachandran
使用NTLM怎么样? - Cece Dong - MSFT
我的意思是当您配置TFS并配置构建代理时。 - Cece Dong - MSFT
在配置TFS时使用NTLM。即使在TFS管理控制台中,它也显示为NTLM。在为身份验证配置构建代理时,默认值为Integrated。我已经尝试过Negotiate,但没有成功。我已经在问题本身中提到了这一点。我计划查看是否有可能使用未经人员监管的选项。基本上是计划使用以下命令进行查看。\config.cmd --unattended --url http://mylocaltfsserver:8080/tfs --auth Negotiate --username DOMAIN\USER_NAME --password MyPassword --pool default --agent myagent - Baskar Lingam Ramachandran
显示剩余3条评论

0

有几件事情可能出了问题。

在按照Remko的答案并使用“PAT”切换到“Negotiate”方法后,如果由于“发送请求时发生错误”而仍然无法使其工作,则可能是由于证书问题。在这种情况下,您可以通过传递参数-sslskipcertvalidaion来简单地跳过curl内部执行的证书验证步骤,如下所示。

./config.sh --sslskipcertvalidation

这里是参考文档:使用自签名证书运行代理


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接