我目前正尝试在两个不受信任的域之间启用 Windows 远程管理(特别是 Powershell Remoting),但没有成功。
我的设置的简要说明:
- domain1-我的工作站在这个域上
- domain2 - 我希望连接的服务器位于此域上
这些域之间没有信任。
我正在尝试从我的工作站(加入到域 1)使用以下命令创建 Powershell 远程连接:
参数( [参数(必填=$True)] $服务器 ) $用户名 = “域\用户” $password = read-host"输入 $username 的密码"-AsSecureString $credential = 新对象 System.Management.Automation.PSCredential($用户名,$密码) $session = New-PSSession“$server”-身份验证 CredSSP -凭据 $credential -UseSSL -SessionOption(New-PSSessionOption -SkipCACheck -SkipCNCheck) 输入-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 帮助主题。
我已经尝试/验证了以下事项:
- 我已验证 domain2 中的 WSMAN\computername 和 WSMAN\computername.domain2.com 均存在 SPN。
- 已验证计算机配置 -> 管理模板 -> 系统 -> 凭据委派 -> 允许使用仅 NTLM 服务器身份验证的新凭据是否设置正确。
- 在目标计算机上配置 winrm 以使用 ssl。
- 使用以下命令在目标计算机和我的本地工作站上配置 CredSSP:
在目标计算机上启用 WSManCredSSP -Role Server# 启用-WSManCredSSP-角色客户端-DelegateComputer *-Force
- 我已经验证没有任何 FW 规则(无论是本地计算机还是网络)阻止我的访问。
这些都无法让我从域 1 中的工作站成功连接到域 2 中的目标计算机。我可以成功连接到加入域 1 的其他服务器,但不能连接到域 2 中的服务器。我还应该寻找什么和/或尝试让它工作吗?
更新日期 2015 年 6 月 8 日 事实上,我已经能够验证我可以从我的工作站连接到服务器而不使用 CredSSP,这很好;但是,我需要能够针对 SharePoint 运行脚本,如果不使用 CredSSP 则执行此操作会失败并出现权限错误。
答案1
这微软本文介绍了如何配置 WinRM 以实现多跳支持,同时还解决了当 Kerberos 不可行时如何建立连接的问题。简要总结如下。
Windows 远程管理 (WinRM) 支持在多台远程计算机之间委派用户凭据。多跳支持功能现在可以使用凭据安全服务提供程序 (CredSSP) 进行身份验证。CredSSP 使应用程序能够将用户的凭据从客户端计算机委派到目标服务器。
CredSSP 身份验证适用于无法使用 Kerberos 委派的环境。添加了对 CredSSP 的支持,以允许用户连接到远程服务器并能够访问第二跳机器,例如文件共享。
具体来说,文章中有关注册表项/组策略设置 AllowFreshCredentialsWhenNTLMOnly 的部分解决了我遇到的问题。摘自文章:
如果 Kerberos 身份验证和证书指纹均不可用,用户可以启用 NTLM 身份验证。如果使用 NTLM 身份验证,则必须启用“允许使用仅 NTLM 服务器身份验证的新凭据 (AllowFreshCredentialsWhenNTLMOnly)”策略,并且必须将带有 WSMAN 前缀的 SPN 添加到该策略中。此设置的安全性低于 Kerberos 身份验证和证书指纹,因为凭据会发送到未经身份验证的服务器。
有关 AllowFreshCredentialsWhenNTLMOnly 策略的详细信息,请参阅组策略编辑器和 KB 951608 提供的策略说明。AllowFreshCredentialsWhenNTLMOnly 策略位于以下路径:计算机配置\管理模板\系统\Credentials Delegation。