无法将本地加入 Azure DSC 自动化(响应代码:未经授权)

无法将本地加入 Azure DSC 自动化(响应代码:未经授权)

我在将 Windows 计算机加入 Azure DSC 自动化时遇到困难。我收到以下错误:

向服务器 https://azureserver/accounts/XXXXXXXXXXXXXXXXXXXX 注册 Dsc Agent 失败。底层错误是:尝试使用 AgentId 注册 Dsc Agent
XXXXXXXXXXXXXXXXXXXXX 服务器 https://azureserver/accounts/XXXXXXXXXXXXXXXXXXX/Nodes(AgentId='XXXXXXXXXXXXXXXXXXXXXX') 返回了意外响应代码
未授權。。
    + CategoryInfo:InvalidResult:(root/Microsoft/...gurationManager:String)[],CimException
    + FullyQualifiedErrorId:RegisterDscAgentUnsuccessful,Microsoft.PowerShell.DesiredStateConfiguration.Commands.RegisterDscAgentCommand
    + PSComputerName:AZURE-TEST

这是我的元 mof 配置

参数(
[参数(必填=$True)]
        [字符串]$RegistrationUrl,

        [参数(必填=$True)]
        [字符串]$RegistrationKey,

        [参数(必填=$True)]
        [字符串[]]$计算机名称,

        [Int]$RefreshFrequencyMins = 30,

        [Int]$ConfigurationModeFrequencyMins = 15,

        [字符串]$ConfigurationMode = "ApplyAndMonitor",

        [字符串]$NodeConfigurationName


[DscLocalConfigurationManager()]
配置 DscMetaConfigs
{

    参数
        [参数(必填=$True)]
        [字符串]$RegistrationUrl,

        [参数(必填=$True)]
        [字符串]$RegistrationKey,

        [参数(必填=$True)]
        [字符串[]]$计算机名称,

        [Int]$RefreshFrequencyMins = 30,

        [Int]$ConfigurationModeFrequencyMins = 15,

        [字符串]$ConfigurationMode = "ApplyAndMonitor",

        [字符串]$NodeConfigurationName,

        [布尔值]$RebootNodeIfNeeded= $False,

        [字符串]$ActionAfterReboot = "继续配置",

        [布尔值]$AllowModuleOverwrite = $False,

        [布尔值]$ReportOnly = $False

    if(!$NodeConfigurationName -或 $NodeConfigurationName -eq "")
    {
        $配置名称 = $null
    }
    别的
    {
        $配置名称 = @($节点配置名称)
    }

    如果($ReportOnly)
    {
    $RefreshMode =“推送”
    }
    别的
    {
    $RefreshMode =“拉”
    }

    节点 $ComputerName
    {

        设置
        {
            刷新频率分钟 = $刷新频率分钟
            刷新模式 = $刷新模式
            配置模式 = $配置模式
            允许模块覆盖 = $允许模块覆盖
            如果需要重启节点 = $如果需要重启节点
            重启后操作 = $重启后操作
            配置模式频率分钟 = $配置模式频率分钟
        }

        如果(!$ReportOnly)
        {
        配置存储库Web Azure自动化DSC
            {
                服务器 URL = $RegistrationUrl
                RegistrationKey = $RegistrationKey
                配置名称 = $配置名称
            }

            资源存储库Web Azure自动化DSC
            {
            服务器 URL = $RegistrationUrl
            RegistrationKey = $RegistrationKey
            }
        }

        报告服务器Web Azure自动化DSC
        {
            服务器 URL = $RegistrationUrl
            RegistrationKey = $RegistrationKey
        }
    }
}

DscMetaConfigs -RegistrationUrl $RegistrationUrl -RegistrationKey $RegistrationKey -计算机名称 $env:计算机名称 -NodeConfigurationName $NodeConfigurationName  

我有一个脚本,允许最终用户输入必要的信息(注册密钥、URL 等),生成元 mof,然后将其提供给 LCM。但是当我尝试执行时,我得到了上述错误。

以下是相关的 DSC 事件错误日志

作业 {6E7C0C83-BD69-11E7-BD75-005056852B86}:
Http Client XXXXXXXXXXXXXXXXXXXXXX WebReportManager 配置失败
FullyQualifiedErrorId:ReportManagerSendStatusReportUnsuccessful
 CategoryInfo:InvalidResult:(:) [],InvalidOperationException
 ExceptionMessage:尝试向服务器发送状态报告 https://azureserver/accounts/XXXXXXXXXXXXXXXX/Nodes(AgentId='XXXXXXXXXXXXXXXXXXXXXXXXXXXX')/SendReport 返回意外响应代码未授权。
,内部异常

有人知道问题可能出在哪里吗?鉴于错误,我假设它与权限/身份验证有关,但除了密钥之外,我不确定它还能是什么,我已经仔细检查以确保密钥是正确的。

答案1

我遇到了完全相同的问题,最后我找到了解决方案。

太长不看;

DSC-Oaas删除服务器上的所有各种证书(使用 Powershell):

 gci cert: -Recurse | where friendlyname -eq "DSC-OaaS Client Authentication" | Remove-Item -Verbose

然后将服务器注册到 Azure 自动化。

说明

查看 EventViewer 中的 DSC 日志,我发现一些看起来很有趣的条目。注意标识符Job

日志级别错误

进一步查看条目列表,确保查看具有相同Job标识符的条目,我发现一个条目告诉我与 Azure 自动化通信中使用了哪个证书:

日志级别信息

我在本地机器证书存储中找到了该证书以及一堆其他类似的证书。

找到证书

所有证书

当我删除所有证书时friendlyname = DSC-OaaS Client Authentication

gci cert: -Recurse | where friendlyname -eq "DSC-OaaS Client Authentication" | Remove-Item -Verbose

..并将服务器成功注册到 Azure 自动化。

答案2

您可以在 Azure 门户上获取注册密钥和 URL。

在此处输入图片描述

更多信息请参阅此官方文件

相关内容