You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacOS及Windows本地自托管Agent无法认证本地Azure DevOps Server的问题求助

问题分析与解决方案

先梳理下核心矛盾:浏览器能正常通过管理员账号访问Azure DevOps Server,但自托管Agent(无论Mac还是Windows端)用相同凭据走Negotiate认证却失败,甚至Windows端还抛出TF400813匿名访问错误。这大概率是认证协议的支持差异和服务器/IIS的认证配置细节导致的,下面分步骤给出排查和解决方法:


一、先确认服务器端的基础配置是否正确

浏览器能访问不代表IIS和Azure DevOps Server的认证规则完全适配Agent的请求逻辑,先把服务器端的配置拉到位:

  1. 检查IIS的身份验证设置
    • 登录Windows Server,打开IIS管理器,找到Azure DevOps对应的站点(默认是Default Web Site)。
    • 进入「身份验证」功能:
      • 确保Windows身份验证已启用,右键点击它选择「提供程序」,确认Negotiate和NTLM都在列表中(非域环境下NTLM是关键,Kerberos无法正常工作)。
      • 禁用「匿名身份验证」,避免请求被误判为匿名访问。
  2. 确认Azure DevOps Server的认证模式
    • 打开Azure DevOps Server管理控制台,进入「应用层」→「身份验证」,确认认证模式是Negotiate,且没有勾选「要求使用HTTPS」(如果还在测试HTTP模式的话)。

二、解决Mac端Agent的认证失败问题

Mac系统对Negotiate认证的支持和浏览器有差异,浏览器可能自动处理了NTLM的凭据传递,但Agent脚本需要更明确的配置:

  1. 尝试明确使用NTLM认证类型
    运行./config.sh时,当提示选择认证类型,不要选默认的Negotiate,手动输入大写的NTLM,再输入管理员账号和密码。部分Agent版本在非域Mac环境下,NTLM的兼容性比Negotiate更好。
  2. 匹配Agent与服务器的版本
    你当前用的Mac Agent是2.190.0,而服务器是Azure DevOps Server 2020 Update 1.1,版本不匹配可能导致认证逻辑冲突。建议直接从服务器仪表盘的「代理池」→「下载代理」获取对应版本的Agent包,再重新配置。
  3. 在Mac钥匙串中预存NTLM凭据
    打开「钥匙串访问」,添加一条新的「互联网密码」:
    • 服务器地址填你的Azure DevOps Server IP(比如http://xxx.xxx.xxx.xxx)
    • 用户名填Administrator,密码填对应凭据
      保存后重新运行./config.sh选择Negotiate,看是否能自动拾取凭据完成认证。

三、解决Windows端Agent的认证问题(辅助排查)

Windows端的TF400813错误说明Agent的请求被当作匿名请求处理,大概率是本地策略或权限问题:

  1. 调整本地安全策略的NTLM级别
    打开「本地安全策略」→「本地策略」→「安全选项」,找到「网络安全: LAN管理器身份验证级别」,设置为「发送NTLMv2响应\拒绝LM & NTLM」或更低级别(比如「发送LM & NTLM - 如果协商,则使用NTLMv2会话安全」),确保NTLM认证被系统允许。
  2. 用管理员权限运行配置脚本
    右键PowerShell选择「以管理员身份运行」,再执行Agent的配置脚本,避免权限不足导致凭据无法正常传递。
  3. 尝试Integrated认证类型
    如果是用Administrator账号登录Windows Server,直接按回车选择Integrated认证类型,让Agent使用当前登录用户的凭据,看是否能绕过Negotiate的问题。

四、HTTPS+PAT认证的正确配置(如果之前尝试失败)

如果你之前启用HTTPS用自签名证书失败,大概率是Agent不信任自签名证书,按下面步骤重新配置:

  1. 生成正确的自签名证书
    在Windows Server上生成证书时,确保证书的**主体名称(CN)**和服务器的IP/FQDN完全匹配(比如用IP访问的话,CN就填xxx.xxx.xxx.xxx)。
  2. 让Agent信任自签名证书
    • Mac端:双击证书文件,导入到「系统」钥匙串,右键证书→「显示简介」→「信任」,将「使用此证书时」设置为「始终信任」。
    • Windows端:将证书导入到「受信任的根证书颁发机构」存储中。
  3. 配置Azure DevOps Server使用HTTPS
    在Azure DevOps Server管理控制台中,将应用层URL改为HTTPS(比如https://xxx.xxx.xxx.xxx/MyProjectCollection),重启服务器服务。
  4. 生成并使用PAT
    在Azure DevOps仪表盘点击用户头像→「个人访问令牌」,创建一个拥有Agent Pools (Read & Manage)和Deployment Groups (Read & Manage)权限的PAT,然后在配置Agent时选择PAT认证类型,输入该令牌即可。

额外排查点

  • 检查服务器防火墙:确保Mac/Windows能访问服务器的80(HTTP)或443(HTTPS)端口,没有被防火墙拦截。
  • 查看Agent诊断日志:Mac和Windows端的Agent目录下都有_diag文件夹,日志里会详细记录认证失败的具体原因(比如NTLM握手失败、Kerberos票据获取失败等),可以根据日志进一步定位问题。

内容的提问来源于stack exchange,提问作者Maxime Esprit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 04:57:34