我的问题类似于Powershell Remoting:单向信任但是存在差异,并且解决方案(将服务器添加到受信任列表)对我来说不起作用。
设想:
我有两个域。DOMAIN 和 DOMAINDMZ。DOMAIN 具有来自 DOMAINDMZ 的传入信任。也就是说 DOMAINDMZ 信任 DOMAIN,但反之则不然。
我有一个管理用户,DOMAIN\myadmin
他是 DOMAINDMZ 域中多台服务器上的管理员本地组的成员:servera.domaindmz.com
、、等。我可以从控制台或 RDP 使用 DOMAIN\myadmin 登录这些服务器。serverb.domaindmz.com
serverc.domaindmz.com
我尝试登录 SERVERA 并使用 PowerShell 远程处理在 SERVERB 上运行 PowerShell 脚本。SERVERB 上已启用远程管理。我在 SERVERA 上启动提升的 PowerShell 会话,然后尝试使用 cmdlet Invoke-Command
。我收到以下错误:
PS C:\Windows\system32> Invoke-Command -ComputerName serverb.domaindmz.com -ScriptBlock {hostname}
[serverb.domaindmz.com] Connecting to remote server failed with the following error message : WinRM cannot process the request. The following error occured while using Kerberos authentication: The network path was not found.
Possible causes are:
-The user name or password specified are invalid.
-Kerberos is used when no authentication method and no user name are specified.
-Kerberos accepts domain user names, but not local user names.
-The Service Principal Name (SPN) for the remote computer name and port does not exist.
-The client and remote computers are in different domains and there is no trust between the two domains.
After checking for the above issues, try the following:
-Check the Event Viewer for events related to authentication.
-Change the authentication method; add the destination computer to the WinRM TrustedHosts configuration setting or use HTTPS transport.
Note that computers in the TrustedHosts list might not be authenticated.
-For more information about WinRM configuration, run the following command: winrm help config. For more information, see the about_Remote_Troubleshooting Help topic.
+ CategoryInfo : OpenError: (:) [], PSRemotingTransportException
+ FullyQualifiedErrorId : PSSessionStateBroken
如果我提供包含 DOMAINDMZ 域中的用户的凭据对象,则错误消失并且脚本块按预期执行:
PS C:\Windows\system32> Invoke-Command -ComputerName serverb.domaindmz.com -Credential DOMAINDMZ\Administrator -ScriptBlock {hostname}
SERVERB
问题:
鉴于错误,我怀疑问题与信任和 Kerberos 有关,但我不清楚我能做些什么来解决。我应该为 DOMAIN\myadmin 或 SERVERB 设置 SPN 吗?我还可以尝试其他方法吗?
答案1
正如 Joeqwerty 所说,通常认为将使用具有外部信任的 NTLM 身份验证,以及使用具有森林信任的 Kerberos。
但是,可以使 Kerberos 身份验证与外部域一起工作,但是有一些条件。
必须使用完全限定域名 (FQDN) 创建信任。如果受信任域对象中缺少 FQDN,Kerberos 引用将失败。
用户名语法为 UPN,并且 UPN 后缀可在 DNS 中解析为 DC(隐式 UPN)
UDP 389、UDP/TCP 88 和 UDP/TCP 464 端口对用户域中的域控制器开放。
信任资源域中的服务器名称必须是 FQDN,并且服务器名称的域后缀必须与 AD DS 域的 DNS FQDN 匹配。
如果此后它仍然让您感到太过痛苦,我建议您切换到受 SSL 保护的协商身份验证。
一些额外的阅读/参考资料:
http://technet.microsoft.com/en-us/library/dd560679(WS.10).aspx
答案2
如果你最终掉进这个兔子洞,而且没有其他办法……
这个技巧最终帮我解决了问题。
也许它能帮助其他不幸的人。
Symptoms
In Windows Server 2008 R2 and later versions of Windows Server, the following Group Policy settings can be used to configure KFSO:
Computer Configuration \ Administrative Templates \ System \ Kerberos \ Use Forest Search Order
Computer Configuration \ Administrative Templates \ System \ KDC \ Use Forest Search Order
With these settings configured, Kerberos authentication may work in external trusts in a single-domain forest environment. However, it may fail when the specified forest contains multiple domains.