将新服务器添加到服务器管理器,获取 Kerberos 错误 0x80090322

将新服务器添加到服务器管理器,获取 Kerberos 错误 0x80090322

我正在设置 Windows 实验室环境。它有一个 Win2012R2 域控制器 (srv001),我想向域 (srv003) 添加另一个 Win2012R2 服务器。实际上,一切顺利。我为新服务器提供了一个与 DC 位于同一子网中的静态 IP 地址,将其指向正确的 DNS 服务器,然后将服务器添加到域中。

但是,当我将新服务器添加到服务器管理器时,我收到 Kerberos 错误:0x80090322。我有一条很长的错误消息,我将在下面发布。我做了一些测试,发现我实际上能够使用 Kerberos 身份验证设置到服务器的远程 Powershell 会话:

$s = New-PSSession -ComputerName srv003 -Authentication Kerberos
$s | Enter-PSSession

这里没有问题。我Enable-PSRemoting在远程服务器上运行,那里也没有问题。

为什么服务器管理器不喜欢我的新服务器?特别是因为可以使用与服务器管理器抱怨的相同协议来设置远程 Powershell。


属于错误代码0x80090322的错误消息:

配置刷新失败,错误如下:无法从服务器检索元数据,错误原因如下:WinRM 无法处理请求。使用 Kerberos 身份验证时出现以下错误,错误代码为 0x80090322:出现未知安全错误。可能的原因如下:

  1. 指定的用户名或密码无效。
  2. 当未指定身份验证方法和用户名时,使用 Kerberos。
  3. Kerberos 接受域用户名,但不接受本地用户名。
  4. 远程计算机名称和端口的服务主体名称 (SPN) 不存在。
  5. 客户端和远程计算机位于不同的域中,并且两个域之间没有信任。

检查上述问题后,请尝试以下操作:

  1. 检查事件查看器中是否存在与身份验证相关的事件。
  2. 更改身份验证方法;将目标计算机添加到 WinRM TrustedHosts 配置设置或使用 HTTPS 传输。请注意,TrustedHosts 列表中的计算机可能未经过身份验证。
  3. 有关 WinRM 配置的更多信息,请运行以下命令:winrm help config。

要回顾错误消息中的编号项目:

  1. 我使用域管理员帐户来执行此操作。
  2. 不确定如何在服务器管理器中更改这一点,所以我想默认就可以做到。
  3. 我在域内运行,以域管理员身份启动服务器管理器。
  4. 该服务器实际上具有以下我尚未触及的 SPN:
    1. dfsr-12F9A27C-BF97-4787-9364-D31B6C55EB04/srv003.rwwilden01.local
    2. 条款 RV/SRV003
    3. TERMSRV/srv003.rwwilden01.local
    4. WSMAN/srv003
    5. WSMAN/srv003.rwwilden01.local
    6. RestrictedKrbHost/SRV003
    7. 主机/SRV003
    8. RestrictedKrbHost/srv003.rwwilden01.local
    9. 主机/srv003.rwwilden01.local
  5. 两台计算机都在同一个域中。
  6. 客户端机器上没有事件。
  7. 没必要这么做。

答案1

好吧,我终于搞明白了。我再次仔细查看了远程服务器的事件日志。它包含一个错误,错误文本如下:

Kerberos 客户端收到KRB_AP_ERR_修改来自服务器 srv003 的错误。使用的目标名称是 HTTP/srv003.rwwilden01.local。这表明目标服务器无法解密客户端提供的票证。当目标服务器主体名称 (SPN) 在目标服务正在使用的帐户以外的帐户上注册时,可能会发生这种情况。确保目标 SPN 仅在服务器使用的帐户上注册。如果目标服务帐户密码与 Kerberos 密钥分发中心为该目标服务配置的密码不同,也会发生此错误。确保服务器上的服务和 KDC 都配置为使用相同的密码。如果服务器名称不是完全限定的,并且目标域 (RWWILDEN01.LOCAL) 与客户端域 (RWWILDEN01.LOCAL) 不同,请检查这两个域中是否存在同名的服务器帐户,或使用完全限定的名称来标识服务器。

看来我一周前已经用 SPN 添加了一个托管服务帐户HTTP/srv003.rwwilden.local。我不确定为什么服务器管理器首先尝试这个目标名称,但显然这不起作用。这是有道理的,因为这个 SPN 与实际服务器关系不大。

在我删除服务帐户后,一切都开始按我预期的方式运行。

答案2

遇到了同样的错误,尝试了许多不同的解决方案。有帮助的是使用显式 IPv4 地址而不是域名。

答案3

不久前我遇到了这个问题,我使用“setspn”工具找到了罪魁祸首。通过阅读这篇文章,我对 SPN 有了更好的理解:http://support.microsoft.com/default.aspx?scid=kb;EN-US;929650

答案4

当存在重复的 ServicePrincipalNames 时,就会发生这种情况,这是一种有效的场景,但不幸的是会让 WinRM 感到困惑。

例如,假设服务帐户“appPoolAccount”和服务器“myWebServer”,Active Directory 中的两个对象都将具有包含相同字符串“HTTP/myWebServer”的 ServicePrincipalName 属性。myWebServer 上的 ServicePrincipalName 会略有不同,因为它将是“HTTP/myWebServer:5985

存在(接近)重复的 ServicePrincipalNames 将导致 WinRM 失败,并出现问题中的 Kerberos 错误。

要解决该问题,您可以告诉 Invoke-Command 在搜索 ServicePrincipalName 时包含端口,如下所示:

### Tell WinRM to include the port in the SPN
Invoke-Command -ComputerName myWebServer -ScriptBlock {Get-Process} -SessionOption (New-PSSessionOption -IncludePortInSPN)

相关内容