排查 Azure Connected Machine 代理的连接问题

本文提供有关排查在为 Windows 或 Linux 配置 Azure Connected Machine 代理时可能出现的问题的信息。 其中包括在配置与该服务的连接时,针对交互式安装和大规模安装方法的提示。

有关常规信息,请参阅已启用 Azure Arc 的服务器概述Azure Connected Machine 代理概述以及 Manage 和维护 Connected Machine 代理

代理错误代码

使用下表确定和解决配置 Azure Connected Machine 代理时出现的问题。 控制台或脚本输出显示 AZCM0000 错误代码,其中“0000”可以是任何四位数的数字。

错误代码 可能的原因 建议的补救措施
AZCM0000 操作成功
AZCM0001 发生未知错误 请联系Azure支持部门获取帮助。
AZCM0002 代理中出现内部错误 重启代理服务(HIMDS),然后重试。 如果问题仍然存在,请联系Azure支持部门。
AZCM0003 所请求的操作不受支持 验证该命令是否对操作系统和代理版本有效。
AZCM0004 Azure Arc代理服务未运行 确保混合实例元数据服务(HIMDS)正在运行,然后重试。
AZCM0005 没有文件记录器可用 检查日志目录是否存在并具有足够的磁盘空间和权限。
AZCM0006 代理初始化失败 检查先决条件(网络连接、权限),然后再次运行该命令。
AZCM0011 用户已取消操作 (CTRL+C) 重试上一命令。
AZCM0012 访问令牌无效 如果是通过访问令牌进行身份验证,请获取新令牌,然后重试。 如果通过服务主体或设备登录进行身份验证,请联系Azure支持部门获取帮助。
AZCM0016 缺少必需参数 查看输出中的错误消息,以确定缺少哪些参数。 若要了解命令的完整语法,请运行 azcmagent <command> --help
AZCM0018 在没有管理权限的情况下执行了命令 在权限提升的用户上下文 (administrator/root) 中重试命令。
AZCM0019 配置文件的路径不正确 确保配置文件的路径正确,然后重试。
AZCM0020 指定了未知区域 检查区域名称是否有拼写错误,并确保区域受支持。
AZCM0023 为参数(自变量)提供的值无效 检查错误消息中是否有更具体的信息。 若要了解自变量的有效值或预期格式,请参阅命令 (azcmagent <command> --help) 的语法。
AZCM0026 网络配置存在错误或某些关键服务暂时不可用 检查所需的终结点是否可访问(例如,主机名是否可解析,终结点是否未受阻止)。 如果网络配置为专用链接范围,则必须提供专用链接范围资源 ID 才能使用 --private-link-scope 参数进行注册。
AZCM0027 检测到配置冲突 删除代理配置文件中的冲突设置,然后重试。
AZCM0028 无法打开 TPM 设备 验证受信任的平台模块(TPM)已启用且可访问,然后重试。
AZCM0041 提供的凭据无效 对于设备登录,请验证指定的用户帐户是否能够访问将创建服务器资源的租户和订阅。 对于服务主体登录,请检查客户端 ID 和机密是否正确和有效的到期日期,并确保服务主体来自要在其中创建服务器资源的同一租户。
AZCM0042 创建已启用Azure Arc的服务器资源失败 查看输出中的错误消息,以确定无法创建资源的原因和建议的修正。 有关详细信息,请参阅所需的权限
AZCM0043 删除已启用Azure Arc的服务器资源失败 验证指定的用户或服务主体是否有权删除指定组中启用Azure Arc的服务器或资源。 有关详细信息,请参阅所需的权限。 如果Azure中不再存在资源,请使用 --force-local-only 标志继续。
AZCM0044 已存在同名的资源 --resource-name 参数指定其他名称,或删除Azure中已启用Azure Arc的现有服务器,然后重试。
AZCM0045 无法使用新的公钥更新服务以重新连接 验证网络连接,然后重试。 有关详细信息,请查看代理日志。
AZCM0061 代理服务未响应或不可用 验证该命令是否已在权限提升的用户上下文 (administrator/root) 中运行。 确保 HIMDS 服务正在运行(根据需要启动或重启 HIMDS),然后再次尝试该命令。
AZCM0062 连接服务器时出错 查看输出中的错误消息以获取更具体的信息。 如果在创建Azure资源后出错,请在重试之前删除此资源。
AZCM0063 断开服务器连接时出错 查看输出中的错误消息以获取更具体的信息。 如果此错误仍然存在,请删除Azure中的资源,然后在服务器上运行 azcmagent disconnect --force-local-only
AZCM0064 代理服务未响应或不可用 验证该命令是否已在权限提升的用户上下文 (administrator/root) 中运行。 确保 HIMDS 服务正在运行(根据需要启动或重启 HIMDS),然后再次尝试该命令。
AZCM0065 代理服务未响应或不可用 验证该命令是否已在权限提升的用户上下文 (administrator/root) 中运行。 确保 HIMDS 服务正在运行(根据需要启动或重启 HIMDS),然后再次尝试该命令。
AZCM0066 代理服务未响应或不可用 验证该命令是否已在权限提升的用户上下文 (administrator/root) 中运行。 确保 HIMDS 服务正在运行(根据需要启动或重启 HIMDS),然后再次尝试该命令。
AZCM0067 计算机已连接到Azure 运行 azcmagent disconnect 以删除当前连接,然后重试。
AZCM0068 提供了订阅名称,但在查找相应的订阅 GUID 时出错。 使用订阅 GUID(而不是订阅名称)重试该命令。
AZCM0069 完成本地配置更新时出错 检查代理配置目录的文件权限,然后重试。
AZCM0070 代理服务未响应或不可用 验证该命令是否已在权限提升的用户上下文 (administrator/root) 中运行。 确保 HIMDS 服务正在运行(根据需要启动或重启 HIMDS),然后再次尝试该命令。
AZCM0072 运行扩展工具时出错 查看扩展日志以了解详细信息,然后重试。
AZCM0073 无法获取合作伙伴配置属性 验证合作伙伴集成设置,然后重试。
AZCM0074 添加扩展时出错 确保扩展包有效,然后重试。
AZCM0075 无法获取云配置 检查与所需Azure终结点的连接,然后重试。
AZCM0076 无法使用基于 TPM 的身份验证将计算机连接到Azure 验证受信任的平台模块(TPM)已启用且可访问,然后重试。
AZCM0081 下载Microsoft Entra托管标识证书时出错 如果在尝试将服务器连接到Azure时遇到此消息,代理将无法与Azure Arc服务通信。 删除Azure中的资源,然后重试连接。
AZCM0082 无法使用 TPM 从混合实例元数据服务(HIMDS)获取托管标识证书 确保 HIMDS 服务正在运行并且 TPM 可访问,然后重试。
AZCM0083 未能向服务注册 Arc 持久性凭据 验证网络连接,然后重试。 有关详细信息,请查看代理日志。
AZCM0101 执行命令时出错 查看命令语法(azcmagent <command> --help)并检查代理日志以获取更具体的信息。
AZCM0102 检索计算机主机名时出错 重试命令并指定资源名称(带参数 --resource-name-n)。 仅使用字母数字字符、连字符和/或下划线;请注意,资源名称不能以连字符或下划线结尾。
AZCM0103 生成 RSA 密钥时出错 请联系Azure支持部门获取帮助。
AZCM0105 未能获取签名消息 验证与 Azure Arc 服务的网络连接,然后重试。
AZCM0107 未能检索证书 验证证书存储并重试。
AZCM0108 无法处理 TPM 密钥 验证受信任的平台模块(TPM)已启用且可访问,然后重试。
AZCM0130 代理需要 systemd,但在 systemctl PATH(Linux)中找不到该命令。 受支持的发行版上使用基于 systemd 的 init 系统。
AZCM0131 安装过程中无法识别 Linux 分发版。 验证 OS 是否为 受支持的分发版
AZCM0132 不支持处理器体系结构或平台(Linux)。 使用 受支持的平台/体系结构
AZCM0133 不支持 Linux 分发版或其 ARM64 变体。 使用受支持的发行版和架构
AZCM0141 无法在Azure虚拟机(Linux)上安装代理。 Azure VM 由 Azure 原生管理;请勿在这些 VM 上安装 Connected Machine 代理。 仅供测试,请参阅 https://aka.ms/azcmagent-testwarning
AZCM0143 包管理器 (apt/dnf/zypper) 无法安装 azcmagent 包 (Linux)。 查看包管理器命令日志以了解详细信息,然后重试。
AZCM0145 apt/dpkg 锁在 5 分钟后仍然保持 (Linux)。 确保没有其他 apt/dpkg 操作正在运行,然后重试。
AZCM0146 无法下载 Microsoft 软件包存储库配置 (packages-microsoft-prod)(Linux)。 检查防火墙是否正在阻止 packages.microsoft.com 并重试。
AZCM0147 在 Linux 上,未找到请求的 --desiredversion;在 Windows 上,无法在 Azure 虚拟机上安装代理。 Linux:指定可用版本。 Windows:不要在Azure VM 上安装(仅用于测试,请参阅https://aka.ms/azcmagent-testwarning)。
AZCM0148 无法下载代理安装程序(.msi)(Windows)。 验证对下载终结点的网络、代理、防火墙访问权限,然后重试。
AZCM0149 Windows安装程序(msiexec)返回了意外的错误代码。 查看安装日志和报告的 msiexec 退出代码,然后重试。
AZCM0150 安装过程中的常规故障。 提交支持票证以获取帮助。
AZCM0151 未安装所需的.NET框架版本(Windows)。 安装所需的 .NET Framework 版本或更高版本,然后重试。
AZCM0152 服务器正在运行Azure Stack HCI(Windows)。 使用内置注册体验将其连接到Azure Arc: https://aka.ms/install-arc-on-hci-host
AZCM0153 不支持操作系统体系结构;代理需要 64 位 (x64) OS (Windows)。 在受支持的 x64 操作系统上安装。
AZCM0154 已安装的 PowerShell 版本太旧(Windows)。 升级到 PowerShell 3.0 或更高版本,然后重试。
AZCM0155 安装未使用管理员权限运行(Windows)。 以管理员身份再次运行安装脚本。
AZCM0156 MSI 安装期间发生致命错误(Windows; msiexec 1603)。 有关详细信息,请查看安装日志 %SystemRoot%\AzureConnectedMachineAgent\temp\installationlog.txt ,然后重试。
AZCM0157 由于权限错误(Linux),安装程序无法运行 curl 确保 curl 已安装,并且安装用户可执行,然后重试。
AZCM0158 由于磁盘空间不足(Windows;msiexec 112),安装失败。 释放磁盘空间并重试。
AZCM0159 另一个安装正在进行(Windows; msiexec 1618)。 等待其他安装完成,然后重试。
AZCM0160 安装程序无法打开其日志文件(Windows; msiexec 1622)。 验证日志目录是否存在且可写,然后重试。
AZCM0171 代理 MSI 签名验证失败(Windows)。 确保安装程序是正版的、Microsoft签名的包,并且不会被篡改,然后重试。

代理退出代码

运行 Azure Connected Machine Agent (azcmagent) 命令时,进程可能会终止并显示退出代码。 这些代码指示操作的结果,并帮助诊断问题。 与错误代码不同,当代理进程退出时,操作系统将返回退出代码。

退出代码 Description 建议的修正
0 未发生错误。 无需任何行动。
1 默认错误。 确保满足先决条件、检查代理日志和重试。
2 代理中的内部错误。 重启代理服务。
3 不支持操作。 验证该命令是否对 OS 和代理版本有效。
4 Arc 代理服务未运行。 确保 Hybrid Instance Metadata Service (himds) 服务正在运行。
5 文件记录器不可用。 检查日志目录的磁盘空间和权限。
6 初始化失败。 检查先决条件(网络、权限)。 修复问题后重新运行 azcmagent connect
11 操作被用户中断(Ctrl+C)。 在不中断的情况下重新运行命令。
12 提供的访问令牌无效。 使用 az login 刷新 Azure 凭据,或提供有效的令牌。
18 需要管理权限。 使用提升的权限运行命令(sudo 或提升的命令提示符)。
19 找不到配置文件。 验证配置文件路径,或使用 azcmagent config 重新生成。
20 指定的未知区域。 检查区域拼写并确保区域受支持。
23 提供的参数无效。 使用 azcmagent --help 查看命令语法。
26 出现网络错误。 验证与Azure终结点的连接。 检查防火墙和代理设置。
27 检测到配置冲突。 请在/etc/azcmagent/config.json%ProgramData%\AzureConnectedMachineAgent\Config\localconfig.json中删除冲突的设置,然后重试。
28 无法打开 TPM 设备。 验证受信任的平台模块(TPM)已启用且可访问,然后重试。
41 未能获取访问令牌。 确保 az login 成功,如果适用,则启用 MSI。
42 无法创建Azure资源。 检查订阅权限和资源配额。
43 无法删除Azure资源。 验证资源是否存在并且你具有删除权限。
44 资源已存在。 使用 azcmagent reconnect 而不是 connect
45 无法更新重新连接公钥。 验证网络连接和代理日志后重试。
61 代理通信错误。 重启 himds 服务。
62 无法将计算机连接到Azure。 检查网络连接和订阅权限。
63 无法断开计算机与Azure的连接。 确保计算机处于联机状态且代理正常后重试。
64 无法与 HIMDS 服务器建立通信。 重启 himds 服务并验证日志。
65 无法获取代理元数据。 检查代理日志并重试。
66 无法获取代理状态。 重启代理并验证连接。
67 计算机已连接。 使用 azcmagent reconnect 而不是 connect
68 无法提取订阅 ID。 验证Azure凭据并重试。
69 更新本地配置时出错。 检查文件权限并重试。
70 无法获取本地配置。 验证配置文件完整性并重试。
72 运行扩展工具时出错。 检查扩展日志并重试。
73 无法获取合作伙伴配置。 验证合作伙伴集成设置。
74 添加扩展时出错。 确保扩展包有效,然后重试。
75 无法获取云配置。 检查与Azure终结点的连接。
76 无法使用基于 TPM 的身份验证将计算机连接到Azure。 验证 TPM 是否已启用且可访问,然后重试。
81 未能从 HIS 获取 MSI 证书。 确保 HIS 服务正在运行并重试。
82 无法使用 TPM 从 HIS 获取 MSI 证书。 确保 HIS 服务正在运行,并且 TPM 可访问,然后重试。
83 未能向服务注册 Arc 持久性凭据。 验证网络连接并重试。
101 命令执行错误。 验证命令语法并检查日志以了解详细信息。
102 无法生成资源名称。 确保主机名满足Azure命名要求。
103 无法处理 RSA 密钥。 请联系Azure支持部门获取帮助。
104 未能检索私钥。 验证密钥存储并重试。
105 未能收到已签名的消息。 检查连接并重试。
106 无法保存参数文件。 验证磁盘空间和权限。
107 未能检索证书。 验证证书存储和重试。
108 无法处理 TPM 密钥。 验证 TPM 是否已启用且可访问,然后重试。

代理详细日志

若要遵循本文后面所述的故障排除步骤,需要详细日志。 此日志包含使用详细 () 参数时 -v 工具命令的输出。 日志文件将写入 Windows 的 %ProgramData%\AzureConnectedMachineAgent\Log\azcmagent.log,在 Linux 上写入 /var/opt/azcmagent/log/azcmagent.log

Windows

以下命令是一个示例,说明如何在 Windows 上使用 Connected Machine 代理执行交互式安装时启用详细日志记录。

& "$env:ProgramFiles\AzureConnectedMachineAgent\azcmagent.exe" connect --resource-group "resourceGroupName" --tenant-id "tenantID" --location "regionName" --subscription-id "subscriptionID" --verbose

以下命令是一个示例,演示如何在使用服务主体执行大规模安装时,通过适用于 Windows 的 Connected Machine 代理启用详细日志记录。

& "$env:ProgramFiles\AzureConnectedMachineAgent\azcmagent.exe" connect `
  --service-principal-id "{serviceprincipalAppID}" `
  --service-principal-secret "{serviceprincipalPassword}" `
  --resource-group "{ResourceGroupName}" `
  --tenant-id "{tenantID}" `
  --location "{resourceLocation}" `
  --subscription-id "{subscriptionID}"
  --verbose

Linux

以下命令是在执行交互式安装时使用适用于 Linux 的 Connected Machine 代理启用详细日志记录的示例。

注释

若要运行 azcmagent,必须具有对 Linux 计算机的根访问权限。

azcmagent connect --resource-group "resourceGroupName" --tenant-id "tenantID" --location "regionName" --subscription-id "subscriptionID" --verbose

以下命令示例展示了如何在使用服务主体执行大规模安装时,通过适用于 Linux 的已连接计算机代理启用详细日志记录。

azcmagent connect \
  --service-principal-id "{serviceprincipalAppID}" \
  --service-principal-secret "{serviceprincipalPassword}" \
  --resource-group "{ResourceGroupName}" \
  --tenant-id "{tenantID}" \
  --location "{resourceLocation}" \
  --subscription-id "{subscriptionID}"
  --verbose

服务的代理连接问题

下表列出了有关如何排查和解决这些错误的各种错误和建议。

错误 可能的原因 解决方案
未能获取授权令牌设备流:
Error occurred while sending request for Device Authorization Code: Post https://login.chinacloudapi.cn/fb84ce97-b875-4d12-b031-ef5e7edf9c8e/oauth2/devicecode?api-version=1.0: dial tcp 40.126.9.7:443: connect: network is unreachable.
无法访问 login.chinacloudapi.cn 终结点 运行 azcmagent check,查看防火墙是否阻止了对Microsoft Entra ID的访问。
未能获取授权令牌设备流:
Error occurred while sending request for Device Authorization Code: Post https://login.chinacloudapi.cn/fb84ce97-b875-4d12-b031-ef5e7edf9c8e/oauth2/devicecode?api-version=1.0: dial tcp 40.126.9.7:443: connect: network is Forbidden
代理或防火墙正在阻止对 login.chinacloudapi.cn 终结点的访问。 运行 azcmagent check,查看防火墙是否阻止了对Microsoft Entra ID的访问。
未能从 SPN 获取授权令牌:
Failed to execute the refresh request. Error = 'Post https://login.chinacloudapi.cn/fb84ce97-b875-4d12-b031-ef5e7edf9c8e/oauth2/token?api-version=1.0: Forbidden'
代理或防火墙正在阻止对 login.chinacloudapi.cn 终结点的访问。 运行 azcmagent check,查看防火墙是否阻止了对Microsoft Entra ID的访问。
未能从 SPN 获取授权令牌:
Invalid client secret is provided
服务主体机密错误或无效。 验证服务主体机密。
未能从 SPN 获取授权令牌:
Application with identifier 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' wasn't found in the directory 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'. This can happen if the application has not been installed by the administrator of the tenant or consented to by any user in the tenant
服务主体和/或租户 ID 不正确。 验证服务主体和/或租户 ID。
获取 ARM 资源响应:
The client 'username@domain.com' with object id 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' does not have authorization to perform action 'Microsoft.HybridCompute/machines/read' over scope '/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/myResourceGroup/
providers/Microsoft.HybridCompute/machines/MSJC01' or the scope is invalid. If access was recently granted, please refresh your credentials."}}" Status Code=403
凭据和/或权限错误 验证你或服务主体是否是 Azure Connected Machine Onboarding 角色的成员。
未能连接到 AzcmagentConnect ARM 资源。
The subscription isn't registered to use namespace 'Microsoft.HybridCompute'
Azure资源提供程序未注册。 注册资源提供程序
未能连接到 AzcmagentConnect ARM 资源。
Get https://management.chinacloudapi.cn/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/myResourceGroup/providers/
Microsoft.HybridCompute/machines/MSJC01?api-version=2019-03-18-preview: Forbidden
代理服务器或防火墙正在阻止对 management.chinacloudapi.cn 终结点的访问。 运行 azcmagent check,查看防火墙是否阻止了对Azure 资源管理器的访问。

后续步骤

如果你的问题未在本文中列出,或者无法解决你遇到的问题,请尝试通过以下途径之一获取支持: