1

Я пытался ответить на этот вопрос в Stack Exchange - Администраторы баз данных (https://dba.stackexchange.com/q/129286/51925), но я не получил никаких ответов, поэтому попробую здесь.

Я борюсь с удаленными серверами с помощью служб отчетов SQL Server. Мои службы отчетов работают с отдельными учетными записями домена, и я настроил имена участников-служб для них (HTTP/<Machine> <domain>\<user>). Насколько я вижу, это фактически отключает использование удаленного взаимодействия PowerShell, поскольку имя участника-службы, которое WinRM должен использовать, указывает на учетную запись домена, используемую службами Reporting Services.

У меня нет проблем с запуском, например, 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. В строке: 1 символ: 1
+ Get-CimInstance win32_service -ComputerName <machine>
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~
+ CategoryInfo: ошибка аутентификации: (root\cimv2: win32_service: String) [Get-CimInstance], CimException
+ FullyQualifiedErrorId: HRESULT 0x8033809d, Microsoft.Management.Инфраструктура.CimCmdlets.GetCimInstanceCommand
+ PSComputerName: <machine>

Если я удалю имя участника-службы на одном из моих серверов, то через несколько секунд (немного быстрее для репликации AD?) Я могу использовать приведенные выше команды, но если я затем сброслю имя участника-службы, то через некоторое время команды снова не будут выполнены.

Некоторые из моих служб отчетов должны иметь возможность пересылать учетные данные, поэтому я надеюсь, что кто-то сможет помочь мне решить эту дилемму.

Добрый день всем.

Hynne

2 ответа2

2

Я считаю, что мы нашли решение. Чтобы сервисы Reporting Services и WinRM не боролись за имя участника-службы HTTP, вы можете установить SPN для порта для WinRM следующим образом:

setspn -S HTTP/<Machine>:<port> <Machine>

Рекомендуется создавать имена участников-служб как для короткого имени компьютера, так и для полного доменного имени.
Порт по умолчанию 5985 для HTTP и 5986 для HTTPS, но я считаю, что он может быть настроен на использование разных портов.

При использовании WinRM я просто настраиваю сеанс так:

$CimSessionOption = New-CimSessionOption -EncodePortInServicePrincipalName
$CimSession = New-CimSession -Name ServiceSession -SessionOption $CimSessionOption -ComputerName <Machine>
Get-CimInstance Win32_Service -CimSession $CimSession

Хорошего дня

Hynne

1

В дополнение к ответу @ carsten-hynne, для создания сеанса PowerShell с использованием используемого порта:

$option = New-PSSessionOption -IncludePortInSPN
$pssession = New-PSSession -ComputerName MYMACHINE -SessionOption $option

Примечание: убедитесь, что вы добавили PORT SPN из ответа @ carsten-hynne!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .