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>