Car*_*nne 7 sql-server ssrs powershell
我正在努力处理运行 SQL Server Reporting Services 的远程服务器。我的 Reporting Services 使用单独的域帐户运行,并且我已经为它们设置了 SPN ( HTTP/<Machine> <domain>\<user>)。据我所知,这有效地禁用了 PowerShell 远程处理,因为 WinRM 应该使用的 SPN 指向 Reporting Services 使用的域帐户。
我在运行 eg 时没有问题Get-Service -ComputerName <Machine>,但是如果我尝试Get-CimInstance Win32_Service -ComputerName <machine>或Enter-PsSession <machine>遇到类似的错误:
Get-CimInstance :WinRM 无法处理请求。使用 Kerberos 身份验证时出现错误代码 0x80090322 的以下错误:发生未知安全错误。可能的原因有:
-指定的用户名或密码无效。
-Kerberos 在未指定身份验证方法和用户名时使用。
-Kerberos 接受域用户名,但不接受本地用户名。
- 远程计算机名称和端口的服务主体名称 (SPN) 不存在。
- 客户端和远程计算机在不同的域中,两个域之间不存在信任。检查上述问题后,请尝试以下操作: -
检查事件查看器中是否存在与身份验证相关的事件。
- 更改认证方式;将目标计算机添加到 WinRM TrustedHosts 配置设置或使用 HTTPS 传输。请注意,TrustedHosts 列表中的计算机可能未经过身份验证。
- 有关 WinRM 配置的更多信息,请运行以下命令:winrm help config。在 line:1 char:1 + Get-CimInstance win32_service -ComputerName<machine>+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~ + CategoryInfo: AuthenticationError: (root\cimv2:win32_service:String) [Get-CimInstance], CimException +fullyQualifiedErrorId : HRESULT 0x8033809d,Microsoft.Management.Infrastructure .CimCmdlets.GetCimInstanceCommand + PSComputerName :<machine>
如果我删除其中一台服务器上的 SPN,那么几秒钟后(AD 复制有点快?)我可以使用上述命令,但是如果我然后重置 SPN,命令会在一段时间后再次失败。
我的一些 Reporting Services 需要能够转发凭据,所以我希望有人能够帮助我解决这个难题。
我相信我们已经找到了解决方案。为了避免 Reporting Services 和 WinRM 争夺 HTTP SPN,您可以为 WinRM 设置特定于端口的 SPN,如下所示:
setspn -S HTTP/<Machine>:<port> <Machine>
最好为短机器名称和 FQDN 创建 SPN。
HTTP 的默认端口是 5985,HTTPS 的默认端口是 5986,但我相信可以将其设置为使用不同的端口。
使用 WinRM 时,我只是设置一个像这样的会话:
$CimSessionOption = New-CimSessionOption -EncodePortInServicePrincipalName
$CimSession = New-CimSession -Name ServiceSession -SessionOption $CimSessionOption -ComputerName <Machine>
Get-CimInstance Win32_Service -CimSession $CimSession
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8353 次 |
| 最近记录: |