不受信任域上的 Windows 远程管理

Nic*_*ayo 12 remote-access powershell winrm

我目前正在尝试在 2 个不受信任的域之间启用 Windows 远程管理(特别是 Powershell 远程处理),但没有成功。

我的设置的简要说明:

  • domain1 - 我的工作站在这个域上
  • domain2 - 我想连接的服务器在这个域上

这些域之间不存在信任。

我正在尝试从我的工作站(加入 domain1)使用以下命令创建 Powershell 远程连接:

参数 (
    [参数(强制=$True)]
    $服务器
)

$username = "域\用户"
$password = read-host "输入 $username 的密码" -AsSecureString

$credential = 新对象 System.Management.Automation.PSCredential($username, $password)

$session = New-PSSession "$server" -Authentication CredSSP -Credential $credential -UseSSL -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck)
Enter-PSSession $session

这会导致以下错误消息:

New-PSSession : [computername.domain2.com] 连接到远程服务器 computername.domain2.com 失败并显示以下错误消息:WinRM 客户端
无法处理请求。计算机策略不允许将用户凭据委派给目标计算机,因为该计算机不受信任。目标的身份
如果您使用以下命令将 WSMAN 服务配置为使用有效证书,则可以验证计算机: winrm set winrm/config/service '@{CertificateThumbprint=""}' 或
您可以在事件查看器中检查指定无法创建以下 SPN 的事件:WSMAN/。如果您发现此事件,您可以使用手动创建 SPN
setspn.exe 。如果 SPN 存在,但 CredSSP 无法使用 Kerberos 来验证目标计算机的身份,并且您仍希望允许将用户凭据委派给目标
计算机,使用 gpedit.msc 并查看以下策略:计算机配置 -> 管理模板 -> 系统 -> 凭据委派 -> 仅允许使用 NTLM 的新鲜凭据
服务器身份验证。验证它是否已启用并配置了适合目标计算机的 SPN。例如,对于目标计算机名称“myserver.domain.com”,SPN 可以是
以下之一:WSMAN/myserver.domain.com 或 WSMAN/*.domain.com。在这些更改后再次尝试请求。有关详细信息,请参阅 about_Remote_Troubleshooting 帮助主题。

我已经尝试/验证了以下几点:

  1. 我验证了域 2 中 WSMAN\computername 和 WSMAN\computername.domain2.com 都存在 SPN。
  2. 验证计算机配置 -> 管理模板 -> 系统 -> 凭据委派 -> 允许使用仅 NTLM 服务器身份验证的新鲜凭据设置正确。
  3. 在目标计算机上配置 winrm 以使用 ssl。
  4. 使用以下命令在目标计算机和我的本地工作站上配置 CredSSP:
Enable-WSManCredSSP -Role Server #on 目标计算机
Enable-WSManCredSSP -Role Client -DelegateComputer * -Force
  1. 我已经确认没有 FW 规则(无论是本地计算机还是网络)阻止我的访问。

没有一个允许我从域 1 中的工作站成功连接到域 2 中的目标计算机。我可以成功连接到加入域 1 的其他服务器,而不是域 2 中的服务器。还有什么我应该寻找和/或尝试让它工作的吗?

2015 年 6 月 8 日更新 实际上我已经能够验证我可以在不使用 CredSSP 的情况下从我的工作站连接到服务器,这很好;但是,我需要能够针对 SharePoint 运行脚本,并且在没有 CredSSP 的情况下执行此操作会因权限错误而失败。

use*_*464 2

这篇MSDN文章介绍了如何配置 WinRM 以支持多跳,该文章还解决了在无法选择 Kerberos 时建立连接的问题。简要总结如下。

Windows 远程管理 (WinRM) 支持跨多台远程计算机委派用户凭据。多跳支持功能现在可以使用凭据安全服务提供商 (CredSSP) 进行身份验证。CredSSP 使应用程序能够将用户的凭据从客户端计算机委托给目标服务器。

CredSSP 身份验证适用于无法使用 Kerberos 委派的环境。添加了对 CredSSP 的支持,以允许用户连接到远程服务器并能够访问第二跳计算机,例如文件共享。

具体来说,文章中有关注册表项/组策略设置AllowFreshCredentialsWhenNTLMOnly 的部分解决了我遇到的问题。来自文章:

如果 Kerberos 身份验证和证书指纹都不可用,则用户可以启用 NTLM 身份验证。如果使用 NTLM 身份验证,则必须启用允许使用仅 NTLM 服务器身份验证的新凭据 (AllowFreshCredentialsWhenNTLMOnly) 策略,并且必须将带有 WSMAN 前缀的 SPN 添加到该策略。此设置的安全性低于 Kerberos 身份验证和证书指纹,因为凭据会发送到未经身份验证的服务器。

有关AllowFreshCredentialsWhenNTLMOnly 策略的详细信息,请参阅组策略编辑器和知识库文章 951608 提供的策略说明。AllowFreshCredentialsWhenNTLMOnly 策略位于以下路径:计算机配置\管理模板\系统\凭据委派。