我有一个 C# 进程,作为其角色的一部分,它从一组 Windows Server 2008R2 机器中读取性能计数器。所有机器都在一个公司的 AD 域中并且在同一个网络上。如果我登录到服务器计算机并从我的登录会话中运行 C# 进程,该程序可以正常工作。我现在正在尝试使用带有 powershell 的这个 C# 进程来自动化一些实验。目标是在其中一台服务器上从我的桌面远程启动它。所有机器都在同一个域中(桌面和服务器)。
所有机器都设置了:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
Configure-SMRemoting.ps1 -force -enable
powershell 脚本正在创建一个 PsSession 以连接到运行 C# 进程并使用 invoke-command 启动它的机器。但是,远程主机上的 C# 应用程序无法再访问它监视的设置机器上的性能计数器:-“访问被拒绝”。
怀疑这是一个多跳认证问题,我按照这些说明http://www.ravichaganti.com/blog/?p=1230启用多跳认证。尝试使用 CredSSP:
$cred = Get-Credential -Credential "Company\user"
$session = new-pssession -ComputerName $loadHost -Credential $cred -Authentication CredSSP -ErrorAction Stop
产量:
连接到远程服务器失败并显示以下错误消息:WinRM 客户端无法处理请求。CredSSP 身份验证当前在客户端配置中被禁用。更改客户端配置并再次尝试请求。还必须在服务器配置中启用 CredSSP 身份验证。此外,必须编辑组策略以允许将凭据委派给目标计算机。使用 gpedit.msc 并查看以下策略:计算机配置 -> 管理模板 -> 系统 -> 凭证委派 -> 允许委派新凭证。验证它是否已启用并使用适合目标计算机的 SPN 进行配置。例如,对于目标计算机名称“myserver.domain.com”,SPN 可以是以下之一:WSMAN/myserver.domain.com 或 WSMAN/*。
使用 gpedit.msc,它是简单的 Allow Delegating Fresh Credentials 设置与域的相应 SPN 条目。所有计算机上的防火墙都配置为启用 WinRM Http-In。我已阅读 about_Remote_Troubleshooting 文档无济于事。
关于多跳身份验证是否确实是正确方法的任何想法,或者其他任何可能破坏这一点的想法?