Сбой удаленного сеанса Powershell PSSession — учетная запись администратора домена — ошибка 0x80090322

Сбой удаленного сеанса Powershell PSSession — учетная запись администратора домена — ошибка 0x80090322

Я устраняю проблему с датчиком PRTG, который не собирает информацию Windows Update с одного из наших серверов. Он использует WinRM и удаленную команду PowerShell для этого.

Сервер 1 — сервер выдачи

Сервер 2 - Рабочий сервер

Когда я пытаюсь использовать Enter-PSSession -ComputerName Server1или winrs -r:Server1 dirпроверить соединение, я постоянно получаю следующие ошибки:

PS C:\WINDOWS\system32> winrs -r:Server1 dir


Winrs error:WinRM cannot process the request. The following error with errorcode 0x80090322 occurred while using Kerberos authentication: An unknown security error occurred.
 Possible causes are:
  -The user name or password specified are invalid.
  -Kerberos is used when no authentication method and no user name are specified.
  -Kerberos accepts domain user names, but not local user names.
  -The Service Principal Name (SPN) for the remote computer name and port does not exist.
  -The client and remote computers are in different domains and there is no trust between the two domains.
 After checking for the above issues, try the following:
  -Check the Event Viewer for events related to authentication.
  -Change the authentication method; add the destination computer to the WinRM TrustedHosts configuration setting or use HTTPS transport.
 Note that computers in the TrustedHosts list might not be authenticated.
   -For more information about WinRM configuration, run the following command: winrm help config.

PS C:\WINDOWS\system32> Enter-PSSession -ComputerName Server1
Enter-PSSession : Connecting to remote server Server1 failed with the following error message : WinRM cannot process the request. The
following error with errorcode 0x80090322 occurred while using Kerberos authentication: An unknown security error occurred.
 Possible causes are:
  -The user name or password specified are invalid.
  -Kerberos is used when no authentication method and no user name are specified.
  -Kerberos accepts domain user names, but not local user names.
  -The Service Principal Name (SPN) for the remote computer name and port does not exist.
  -The client and remote computers are in different domains and there is no trust between the two domains.
 After checking for the above issues, try the following:
  -Check the Event Viewer for events related to authentication.
  -Change the authentication method; add the destination computer to the WinRM TrustedHosts configuration setting or use HTTPS transport.
 Note that computers in the TrustedHosts list might not be authenticated.
   -For more information about WinRM configuration, run the following command: winrm help config. For more information, see the
about_Remote_Troubleshooting Help topic.
At line:1 char:1
+ Enter-PSSession -ComputerName Server1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (Server1:String) [Enter-PSSession], PSRemotingTransportException
    + FullyQualifiedErrorId : CreateRemoteRunspaceFailed

Если я запускаю команду на любом из наших других серверов, соединение устанавливается успешно, это единственный сервер, который вызывает у меня проблемы.

Если я запускаю команду Enter-PSSessionс -Credentialпереключателем с моей учетной записью пользователя, я получаю ту же ошибку, но если я запускаю команду и указываю учетную запись локального администратора сервера, он подключается. Другие серверы работают нормально.

PS C:\WINDOWS\system32> Enter-PSSession -ComputerName Server1 -Credential Server1\administrator
[Server1]: PS C:\Users\Administrator\Documents> exit

PS C:\WINDOWS\system32> Enter-PSSession -ComputerName Server1 -credential domain\myuser
Enter-PSSession : Connecting to remote server Server1 failed with the following error message : WinRM cannot process the request. The
following error with errorcode 0x80090322 occurred while using Negotiate authentication: An unknown security error occurred.
 Possible causes are:
  -The user name or password specified are invalid.
  -Kerberos is used when no authentication method and no user name are specified.
  -Kerberos accepts domain user names, but not local user names.
  -The Service Principal Name (SPN) for the remote computer name and port does not exist.
  -The client and remote computers are in different domains and there is no trust between the two domains.
 After checking for the above issues, try the following:
  -Check the Event Viewer for events related to authentication.
  -Change the authentication method; add the destination computer to the WinRM TrustedHosts configuration setting or use HTTPS transport.
 Note that computers in the TrustedHosts list might not be authenticated.
   -For more information about WinRM configuration, run the following command: winrm help config. For more information, see the
about_Remote_Troubleshooting Help topic.
At line:1 char:1
+ Enter-PSSession -ComputerName Server1 -credential alpenaw2k.local\kemp ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (Server1:String) [Enter-PSSession], PSRemotingTransportException
    + FullyQualifiedErrorId : CreateRemoteRunspaceFailed

PS C:\WINDOWS\system32> Enter-PSSession -ComputerName Server2
[Server2]: PS C:\Users\user\Documents> exit
PS C:\WINDOWS\system32>

Если я запущу New-PSSessionс локального сервера, то получу ту же ошибку, если только не укажу коммутатор, -EnableNetworkAccessи тогда он подключится. Это меня сбивает с толку. Event viewer выдает мне Event ID 161, связанный с аутентификацией пользователя, и ошибку 142 для сеанса, который не удалось создать.

Если я запускаю Test-WSManс локального сервера и удаленного хоста, он отображается запущенным.

Вот конфигурация WinRM и конфигурация прослушивателя:

PS C:\Windows\system32> winrm get winrm/config
Config
    MaxEnvelopeSizekb = 500
    MaxTimeoutms = 60000
    MaxBatchItems = 32000
    MaxProviderRequests = 4294967295
    Client
        NetworkDelayms = 5000
        URLPrefix = wsman
        AllowUnencrypted = false
        Auth
            Basic = true
            Digest = true
            Kerberos = true
            Negotiate = true
            Certificate = true
            CredSSP = false
        DefaultPorts
            HTTP = 5985
            HTTPS = 5986
        TrustedHosts = 10.10.10.142
    Service
        RootSDDL = O:NSG:BAD:P(A;;GA;;;BA)(A;;GR;;;IU)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD)
        MaxConcurrentOperations = 4294967295
        MaxConcurrentOperationsPerUser = 1500
        EnumerationTimeoutms = 240000
        MaxConnections = 300
        MaxPacketRetrievalTimeSeconds = 120
        AllowUnencrypted = false
        Auth
            Basic = false
            Kerberos = true
            Negotiate = true
            Certificate = false
            CredSSP = false
            CbtHardeningLevel = Relaxed
        DefaultPorts
            HTTP = 5985
            HTTPS = 5986
        IPv4Filter = *
        IPv6Filter = *
        EnableCompatibilityHttpListener = false
        EnableCompatibilityHttpsListener = false
        CertificateThumbprint
        AllowRemoteAccess = true
    Winrs
        AllowRemoteShellAccess = true
        IdleTimeout = 7200000
        MaxConcurrentUsers = 2147483647
        MaxShellRunTime = 2147483647
        MaxProcessesPerShell = 2147483647
        MaxMemoryPerShellMB = 2147483647
        MaxShellsPerUser = 2147483647

PS C:\Windows\system32> winrm enumerate winrm/config/listener
Listener
    Address = *
    Transport = HTTP
    Port = 5985
    Hostname
    Enabled = true
    URLPrefix = wsman
    CertificateThumbprint
    ListeningOn = 10.10.10.87, 127.0.0.1, ::1, fe80::4579:db85:c9cb:ead0%6

Что еще я пробовал:

  • У меня нет настроек GPO для WinRM.
  • Я удалил и заново создал прослушиватель.
  • Я несколько раз сбрасывал конфигурацию WinRM.
  • Расширенный брандмауэр Windows отключен для публичных, частных и доменных сетей.
  • Я проверил Set-PSSessionConfiguration -Name Microsoft.PowerShell -ShowSecurityDescriptorUIразрешения, и привилегии кажутся в порядке.
  • Я использовал IP-адреса вместо имен хостов с тем же результатом.
  • Я добавил свой компьютер в список доверенных хостов, но он не работает. Это не должно быть необходимым, так как оба компьютера находятся в одном домене.
  • Запущен Enable-PSRemoting -Force(хотя это не обязательно, так как WinRM включен по умолчанию для Server 2012 и более поздних версий).
  • Я добавил своего пользователя в список локальных администраторов и пользователей удаленного управления на сервере, но безуспешно.
  • Я изменил реестр, REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1и это не работает независимо от его значения.
  • Я перезагрузил и запустил sfc /scannowв качестве последней отчаянной попытки.

Характеристики сервера, рабочей станции и моего пользователя:

  • Моя учетная запись домена является учетной записью администратора домена.
  • Сервер — Windows Server 2019 Standard.
  • Рабочая станция — Windows 10 Pro.
  • PowerShell версии 5 для обоих.
  • Оба компьютера находятся в одном домене.
  • Оба компьютера обновлены.

Я мог бы использовать учетную запись локального администратора, чтобы запросить эту информацию и исправить мою сложную проблему, но это не решит основную проблему.

В журнале удаленного управления Windows нет записей об ошибках с удаленного сервера, но на моем компьютере есть следующее:

Код события ошибки - 142

WSMan operation Enumeration failed, error code 2150858909

Код события ошибки - 49

The WinRM protocol operation failed due to the following error: WinRM cannot process the request. The following error with errorcode 0x80090322 occurred while using Kerberos authentication: An unknown security error occurred.  
 Possible causes are:
  -The user name or password specified are invalid.
  -Kerberos is used when no authentication method and no user name are specified.
  -Kerberos accepts domain user names, but not local user names.
  -The Service Principal Name (SPN) for the remote computer name and port does not exist.
  -The client and remote computers are in different domains and there is no trust between the two domains.
 After checking for the above issues, try the following:
  -Check the Event Viewer for events related to authentication.
  -Change the authentication method; add the destination computer to the WinRM TrustedHosts configuration setting or use HTTPS transport.
 Note that computers in the TrustedHosts list might not be authenticated.
   -For more information about WinRM configuration, run the following command: winrm help config..

Код события ошибки - 161

WinRM cannot process the request. The following error with errorcode 0x80090322 occurred while using Kerberos authentication: An unknown security error occurred.  
 Possible causes are:
  -The user name or password specified are invalid.
  -Kerberos is used when no authentication method and no user name are specified.
  -Kerberos accepts domain user names, but not local user names.
  -The Service Principal Name (SPN) for the remote computer name and port does not exist.
  -The client and remote computers are in different domains and there is no trust between the two domains.
 After checking for the above issues, try the following:
  -Check the Event Viewer for events related to authentication.
  -Change the authentication method; add the destination computer to the WinRM TrustedHosts configuration setting or use HTTPS transport.
 Note that computers in the TrustedHosts list might not be authenticated.
   -For more information about WinRM configuration, run the following command: winrm help config.

Я могу без проблем подключиться к серверу по RDP, именно так я проводил некоторые локальные тесты.

Я протестировал эти две команды:

gwmi win32_operatingsystem -ComputerName Server1выполняется нормально, без проблем, то есть указывается удаленный сервер и RDP-подключение для локального запуска.

Get-CimInstance win32_operatingsystem -ComputerName Server1Я не могу запустить его со своей рабочей станции, но если я подключусь по RDP к серверу и запущу его, он будет работать нормально.

Вывод SetSPN -Xне возвращает перекрывающихся SPN

Вывод SetSPN -Lвозвратов:

Registered ServicePrincipalNames for CN=Server1,OU=Servers,OU=Organization,DC=Organization,DC=LOCAL:
        TERMSRV/Server1.DOMAIN.LOCAL
        WSMAN/Server1.DOMAIN.LOCAL
        RestrictedKrbHost/Server1.DOMAIN.LOCAL
        HOST/Server1.DOMAIN.LOCAL
        TERMSRV/Server1
        WSMAN/Server1
        RestrictedKrbHost/Server1
        HOST/Server1

Любые предложения будут высоко оценены.

решение1

Я решил эту проблему.

Это была проблема SPN. HTTP/Server1 и HTTP/Server1.domain использовались случайной учетной записью пользователя, названной по имени сервера.

После отключения учетной записи и перемещения SPN на объект компьютера WinRM теперь работает так, как и должно.

Этотнаправили меня в правильном направлении.

решение2

Я исправил эту проблему для себя, сбросив spn

setspn -R <hostname>

Связанный контент