AD虚拟机触发DSC配置遇WinRM认证错误求助
AD虚拟机DSC配置触发WinRM 0x80090350未知安全错误(重试可恢复)
在AD虚拟机中执行DSC配置(扩展名称为ConfigureActiveDirectory)时,首次运行会触发WinRM认证错误,但重新运行相同配置则不会出现该问题。
错误详情
VMExtensionProvisioningError","message":"VM在处理扩展'ConfigureActiveDirectory'时报告失败。错误信息:"DSC配置'AD'执行完成但存在错误。以下是部分错误:WinRM无法处理请求。使用Negotiate认证时发生错误代码为0x80090350的未知安全错误。
可能原因包括:
- 指定的用户名或密码无效。
- 未指定认证方法和用户名时使用了Kerberos。
- Kerberos接受域用户名,但不接受本地用户名。
- 远程计算机名称和端口的服务主体名称(SPN)不存在。
- 客户端与远程计算机处于不同域且无信任关系。
检查上述问题后,请尝试以下操作:- 查看事件查看器中与认证相关的事件。
- 更改认证方法;将目标计算机添加到WinRM TrustedHosts配置设置或使用HTTPS传输。
请注意,TrustedHosts列表中的计算机可能不会被认证。
当前认证配置
创建域凭据的PowerShell代码如下:
[System.Management.Automation.PSCredential]$DomainCreds = New-Object System.Management.Automation.PSCredential ("${DomainNetBiosName}\$($AdminCredentials.UserName)", $AdminCredentials.Password)
已尝试的无效操作
执行以下WinRM命令添加本地主机到TrustedHosts,未解决问题:
winrm set winrm/config/client '@{TrustedHosts="localhost"}'
排查与解决建议
1. 处理域控制器初始化延迟
首次运行DSC时,AD域控制器可能尚未完全完成初始化(如SPN注册、Kerberos服务就绪),导致Negotiate认证的Kerberos路径失败。重试时域服务已就绪,因此认证成功。可在DSC配置中添加等待逻辑:
# 等待AD域服务启动完成 Wait-Service -Name NTDS -For Running -Timeout 300 # 额外等待SPN自动注册完成(可根据实际情况调整时长) Start-Sleep -Seconds 60
2. 检查并手动注册SPN
错误提示提到SPN不存在的可能性,首次运行时SPN可能未自动注册。可手动检查并补全:
# 检查WinRM相关SPN setspn -L $env:COMPUTERNAME | findstr "WSMAN" # 若缺失则手动注册 setspn -S WSMAN/$env:COMPUTERNAME $env:USERDOMAIN\$env:COMPUTERNAME$ setspn -S WSMAN/$env:COMPUTERNAME.$env:USERDNSDOMAIN $env:USERDOMAIN\$env:COMPUTERNAME$
3. 调整WinRM认证优先级
将WinRM认证方式调整为NTLM优先,避免首次Kerberos认证失败:
winrm set winrm/config/service/auth '@{Negotiate="true"; NTLM="true"}' winrm set winrm/config/client/auth '@{Negotiate="true"; NTLM="true"}' # 允许NTLM认证绕过Kerberos加密检查 reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters /v AllowEncryptionOracle /t REG_DWORD /d 2 /f
4. 事件日志深度排查
查看虚拟机事件查看器中的以下日志,获取更详细的认证失败原因:
- 应用程序和服务日志 > Microsoft > Windows > WinRM > Operational
- 应用程序和服务日志 > Microsoft > Windows > Kerberos-Key-Distribution-Center > Operational
内容的提问来源于stack exchange,提问作者Hariprasath
相关产品推荐
相关产品推荐

