远程 PowerShell“WinRM 无法处理请求。”- 仅单向工作
我在远程服务器上执行 PowerShell 脚本时遇到了麻烦。基本上,我有 2 个服务器 SERVER-A 和 SERVER-B 。
从 SERVER-A 远程执行 SERVER-B 上的 Invoke-Command 和 Enter-PSSession 是可行的,但是当我以另一种方式执行时,我得到 * “WinRM 无法处理请求。使用协商身份验证时发生以下错误,错误代码为 0x80090322:发生未知安全错误...” 。
我尝试在两个服务器中添加和删除 SPN(HTTP 和 WSMAN)条目,并在每种情况下进行测试,结果保持不变。
我确实检查了防火墙配置,并且 Windows 远程处理已启用。
服务器之间的唯一区别是 SERVER-A 位于专用网络上,而 SERVER-B 位于域网络上。我无法将 SERVER-A 网络更改为域,因为我认为它是主域控制器。
我是一名开发人员,在这个领域没有太多经验。不确定如何使 SERVER-B 能够在 SERVER A 中远程使用 PowerShell。
编辑
在事件查看器中我看到错误:
我尝试了上述步骤。但我在事件查看器中看到错误,使用的身份验证方法是 Kerberos。我看到错误:“ Kerberos 客户端从服务器 SERVER$ 收到 KRB_AP_ERR_MODIFIED 错误。使用的目标名称是 HTTP/SERVER.DOMAIN。这表示目标服务器无法解密客户端提供的票证。当目标服务器主体名称 (SPN) 在目标服务正在使用的帐户以外的帐户上注册时,可能会发生这种情况。确保目标 SPN 仅在服务器使用的帐户上注册。如果目标服务帐户密码与 Kerberos 密钥分发中心为该目标服务配置的密码不同,也会出现此错误。确保服务器上的服务和 KDC 都配置为使用相同的密码。如果服务器名称不是完全限定的,并且目标域 (DOMAIN.LOCAL) 与客户端域 (DOMAIN.LOCAL) 不同,请检查这两个域中是否存在同名的服务器帐户,或使用完全限定的名称来标识服务器。 ”
有人认为这可能是由于客户端和 DC 时间不一致造成的同步,但我验证了它们是相同的。
• 由于您表示服务器 A 是主域控制器,而服务器 B 是域成员系统,因此这两个系统都受域权限的安全策略和定义的目录架构约束。因此,请检查组策略服务器/AD 服务器中的以下组策略设置是否已启用或已禁用。如果已启用,请禁用它,因为此设置将禁用 WinRM 服务的身份验证协议协商。
‘ 组策略管理 -> 默认域策略 -> 编辑 -> 计算机配置 -> 管理模板 -> Windows 组件 -> Windows 远程管理 -> WinRM 服务 -> 不允许协商身份验证 -> 已禁用 ’
• 完成上述操作后,通过主域控制器和成员服务器上的“gpupdate /force”命令更新组策略设置。然后在两者上重新启动 Windows 远程管理 (WS-MAN) 服务。然后,请尝试将 IIS 应用程序池更改为在“本地系统”下运行,并删除现有的 SPN(如下所示),然后再次连接到服务器 B 进行检查。如果问题仍然存在,请在 IIS 管理控制台中禁用内核模式身份验证。
‘ setspn -D HTTP/SERVERNAME <domain account>
setspn -D HTTP/SERVERNAME.DOMAINAME.COM <domain account> ‘
此外,请参考下面的社区帖子并尝试执行其中提到的步骤,因为它可能有助于在另一台服务器上执行远程 powershell 脚本而不会出现任何问题,因为它与在 DNS 服务器和本地主机文件中添加 DNS 记录有关:-
https://serverfault.com/questions/877459/remote-powershell-not-working-but-test-wsman-does
我遇到了同样的错误消息。对我来说,如果我预先提供凭据(即在运行脚本时手动输入凭据,这在我的场景中是可以的),它就可以正常工作。我猜,那时 kerberos 票证已经可用了。
$cred = Get-Credential -UserName "YourDomain\YourUser" -Message "Enter your credentials"
$server = "YourServer"
invoke-command -Credential $cred -Authentication Credssp -ComputerName $server -ScriptBlock { Write-Host "test" }
对不起,我再也没有回到这个问题了,但是就我而言,这似乎是错误的,因为我的客户端服务器已被关闭了很长时间。不确定是这样,但是几天后它开始工作。