Ich behebe ein Problem mit einem PRTG-Sensor, der keine Windows Update-Informationen von einem unserer Server sammelt. Dazu verwende ich WinRM und einen Remote-PowerShell-Befehl.
Server 1 – Problemserver
Server 2 - Funktionierender Server
Wenn ich versuche, die Verbindung zu verwenden Enter-PSSession -ComputerName Server1
oder winrs -r:Server1 dir
zu testen, erhalte ich immer wieder die folgenden Fehlermeldungen:
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
Wenn ich den Befehl auf einem unserer anderen Server ausführe, ist die Verbindung erfolgreich; dies ist der einzige Server, der mir Probleme bereitet.
Wenn ich den Befehl Enter-PSSession
mit dem -Credential
Schalter unter meinem Benutzerkonto ausführe, erhalte ich denselben Fehler. Wenn ich den Befehl jedoch ausführe und das lokale Administratorkonto des Servers angebe, wird eine Verbindung hergestellt. Andere Server funktionieren einwandfrei.
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>
Wenn ich es New-PSSession
vom lokalen Server aus ausführe, erhalte ich denselben Fehler, es sei denn, ich gebe den -EnableNetworkAccess
Switch an und dann wird eine Verbindung hergestellt. Das verwirrt mich. Die Ereignisanzeige gibt mir die Ereignis-ID 161 bezüglich der Benutzerauthentifizierung und den Fehler 142 für die fehlgeschlagene Sitzungserstellung.
Wenn ich Test-WSMan
es vom lokalen Server und einem Remote-Host aus ausführe, wird angezeigt, dass es ausgeführt wird.
Hier ist die WinRM-Konfiguration und die Listener-Konfiguration:
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
Andere Dinge, die ich versucht habe:
- Ich habe keine GPO-Einstellungen für WinRM eingerichtet.
- Ich habe den Listener gelöscht und neu erstellt.
- Ich habe die Konfiguration von WinRM mehrmals zurückgesetzt.
- Die erweiterte Firewall von Windows ist für öffentliche, private und Domänennetzwerke deaktiviert.
- Ich habe die
Set-PSSessionConfiguration -Name Microsoft.PowerShell -ShowSecurityDescriptorUI
Berechtigungen geprüft und die Privilegien scheinen in Ordnung zu sein. - Ich habe IP-Adressen anstelle von Hostnamen verwendet, mit denselben Ergebnissen.
- Ich habe meinen Computer zur Liste der vertrauenswürdigen Hosts hinzugefügt, aber er funktioniert nicht. Dies sollte jedoch nicht notwendig sein, da sich beide Computer in derselben Domäne befinden.
- Ran
Enable-PSRemoting -Force
(obwohl dies unnötig sein sollte, da WinRM für Server 2012 und höher standardmäßig aktiviert ist). - Ich habe meinen Benutzer ohne Erfolg zu den lokalen Administratoren und Remoteverwaltungsbenutzern auf dem Server hinzugefügt.
- Ich habe die Registrierung angepasst
REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1
und dies funktioniert unabhängig vom Wert nicht. sfc /scannow
Ich habe neugestartet und als letzten Versuch einen ausgeführt .
Spezifikationen des Servers, der Arbeitsstation und meines Benutzers:
- Mein Domänenkonto ist ein Domänenadministrator.
- Als Server wird Windows Server 2019 Standard verwendet.
- Die Workstation ist Windows 10 Pro.
- PowerShell Version 5 für beide.
- Beide Computer befinden sich in derselben Domäne.
- Beide Rechner sind auf dem neuesten Stand.
Ich könnte das lokale Administratorkonto verwenden, um diese Informationen abzufragen und mein Einschüchterungsproblem zu beheben, aber das behebt nicht das zugrunde liegende Problem.
Vom Remote-Server gibt es keine Fehlereinträge im Windows Remote Management-Protokoll, aber auf meinem Computer habe ich diese:
Fehlerereignis-ID – 142
WSMan operation Enumeration failed, error code 2150858909
Fehlerereignis-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..
Fehlerereignis-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.
Ich kann problemlos per RDP auf den Server zugreifen, so habe ich einige der lokalen Tests durchgeführt.
Ich habe diese beiden Befehle getestet:
gwmi win32_operatingsystem -ComputerName Server1
wird normal und ohne Probleme ausgeführt, d. h. durch Angabe des Remote-Servers und RDP zur lokalen Ausführung.
Get-CimInstance win32_operatingsystem -ComputerName Server1
Ich kann es nicht von meiner Workstation aus ausführen, aber wenn ich mich per RDP mit dem Server in Verbindung setze und es ausführe, wird es normal ausgeführt.
Die Ausgabe von SetSPN -X
gibt keine überlappenden SPNs zurück
Die Ausgabe von SetSPN -L
Returns:
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
Alle Vorschläge sind sehr willkommen.
Antwort1
Ich habe es gelöst.
Es war ein SPN-Problem. HTTP/Server1 und HTTP/Server1.domain wurden von einem zufälligen Benutzerkonto verwendet, das nach dem Server benannt war.
Nachdem das Konto deaktiviert und die SPNs zum Computerobjekt verschoben wurden, funktioniert WinRM nun wie vorgesehen.
Dashat mich in die richtige Richtung gebracht.
Antwort2
Ich habe dieses Problem für mich selbst behoben, indem ich den SPN zurückgesetzt habe.
setspn -R <hostname>