Ich habe diese Frage auf Stack Exchange - Datenbankadministratoren (https://dba.stackexchange.com/q/129286/51925), aber ich bekomme keine Antworten, also versuche ich es hier.
Ich habe Probleme mit der Remote-Konfiguration von Servern mit SQL Server Reporting Services. Meine Reporting Services laufen mit einzelnen Domänenkonten und ich habe SPNs für sie eingerichtet ( HTTP/<Machine> <domain>\<user>
). Soweit ich sehe, wird dadurch die Verwendung von PowerShell-Remoting effektiv deaktiviert, da der SPN, den WinRM verwenden sollte, auf das von Reporting Services verwendete Domänenkonto verweist.
Ich habe kein Problem beim Ausführen von eg Get-Service -ComputerName <Machine>
, aber wenn ich es versuche Get-CimInstance Win32_Service -ComputerName <machine>
, Enter-PsSession <machine>
erhalte ich eine Fehlermeldung ähnlich dieser:
Get-CimInstance: WinRM kann die Anforderung nicht verarbeiten. Beim Verwenden der Kerberos-Authentifizierung ist der folgende Fehler mit dem Fehlercode 0x80090322 aufgetreten: Ein unbekannter Sicherheitsfehler ist aufgetreten.
Mögliche Ursachen sind:
- Der angegebene Benutzername oder das angegebene Kennwort sind ungültig.
- Kerberos wird verwendet, wenn keine Authentifizierungsmethode und kein Benutzername angegeben sind.
- Kerberos akzeptiert Domänenbenutzernamen, aber keine lokalen Benutzernamen.
- Der Service Principal Name (SPN) für den Namen und den Port des Remotecomputers existiert nicht.
- Der Client- und der Remotecomputer befinden sich in unterschiedlichen Domänen und es besteht keine Vertrauensbeziehung zwischen den beiden Domänen.
Nachdem Sie die oben genannten Probleme überprüft haben, versuchen Sie Folgendes:
- Suchen Sie in der Ereignisanzeige nach Ereignissen im Zusammenhang mit der Authentifizierung.
- Ändern Sie die Authentifizierungsmethode; fügen Sie den Zielcomputer zur WinRM TrustedHosts-Konfigurationseinstellung hinzu oder verwenden Sie den HTTPS-Transport.
Beachten Sie, dass Computer in der TrustedHosts-Liste möglicherweise nicht authentifiziert sind.
- Weitere Informationen zur WinRM-Konfiguration erhalten Sie, indem Sie den folgenden Befehl ausführen: winrm help config. In Zeile:1 Zeichen:1
+ Get-CimInstance win32_service -ComputerName<machine>
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo: AuthenticationError: (root\cimv2:win32_service:String) [Get-CimInstance], CimException
+ FullyQualifiedErrorId : HRESULT 0x8033809d,Microsoft.Management.Infrastructure.CimCmdlets.GetCimInstanceCommand
+ PSComputerName :<machine>
Wenn ich den SPN auf einem meiner Server lösche, kann ich nach einigen Sekunden (etwas schnell für eine AD-Replikation?) die obigen Befehle verwenden. Wenn ich den SPN dann jedoch zurücksetze, schlagen die Befehle nach einer Weile erneut fehl.
Einige meiner Reporting Services müssen in der Lage sein, Anmeldeinformationen weiterzuleiten, daher hoffe ich, dass mir jemand bei der Lösung dieses Dilemmas helfen kann.
Allen einen schönen Tag.
Hynne
Antwort1
Ich glaube, wir haben die Lösung gefunden. Um zu vermeiden, dass Reporting Services und WinRM um den HTTP-SPN streiten, können Sie einen portspezifischen SPN für WinRM wie folgt festlegen:
setspn -S HTTP/<Machine>:<port> <Machine>
Es ist eine gute Idee, SPNs sowohl für den Kurznamen des Computers als auch für den FQDN zu erstellen.
Der Standardport ist 5985 für HTTP und 5986 für HTTPS, aber ich glaube, es können auch andere Ports eingerichtet werden.
Wenn ich WinRM verwende, richte ich einfach eine Sitzung wie diese ein:
$CimSessionOption = New-CimSessionOption -EncodePortInServicePrincipalName
$CimSession = New-CimSession -Name ServiceSession -SessionOption $CimSessionOption -ComputerName <Machine>
Get-CimInstance Win32_Service -CimSession $CimSession
Haben Sie einen guten Tag
Hynne
Antwort2
So erstellen Sie zusätzlich zur Antwort von @carsten-hynne eine PowerShell-Sitzung mit dem von Ihnen verwendeten Port:
$option = New-PSSessionOption -IncludePortInSPN
$pssession = New-PSSession -ComputerName MYMACHINE -SessionOption $option
Hinweis: Stellen Sie sicher, dass Sie den PORT SPN aus der Antwort von @carsten-hynne hinzugefügt haben!