Powershell リモート PSSession が失敗しました - ドメイン管理者アカウント - エラー 0x80090322

Powershell リモート PSSession が失敗しました - ドメイン管理者アカウント - エラー 0x80090322

PRTG センサーがサーバーの 1 つから 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。これは私を混乱させます。イベント ビューアーには、ユーザー認証に関連するイベント 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

私が試した他のこと:

  • WinRM 用の GPO 設定がありません。
  • リスナーを削除して再作成しました。
  • WinRM の設定を何度かリセットしました。
  • Windows 拡張ファイアウォールは、パブリック、プライベート、およびドメイン ネットワークでは無効になっています。
  • 権限を確認しましたSet-PSSessionConfiguration -Name Microsoft.PowerShell -ShowSecurityDescriptorUIが、権限は問題ないようです。
  • ホスト名の代わりに IP アドレスを使用しましたが、結果は同じでした。
  • 信頼できるホスト リストにコンピュータを追加しましたが、機能しません。ただし、両方のコンピュータが同じドメインにあるため、これは必要ありません。
  • Ran Enable-PSRemoting -Force(ただし、Server 2012 以降では WinRM がデフォルトで有効になっているため、これは不要です)。
  • サーバー上のローカル管理者とリモート管理ユーザーにユーザーを追加しましたが、うまくいきませんでした。
  • レジストリを調整しました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 リモート管理ログにエラー エントリはありませんが、私のコンピューターには次のエラー エントリがあります。

エラーイベントID - 142

WSMan operation Enumeration failed, error code 2150858909

エラーイベント ID - 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..

エラーイベントID - 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 で問題なく接続できます。これは、いくつかのローカル テストを実行した方法です。

次の 2 つのコマンドをテストしました。

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>

関連情報