So richten Sie PowerShell-Remoting (WinRM) auf Computern in Arbeitsgruppen außerhalb einer Domäne ein

Wie man PowerShell-Remoting über eine Arbeitsgruppe (ohne Domäne) zum Laufen bringt

Die Einrichtung von PowerShell Remoting (PSRemoting) auf Computern ohne Domänenanbindung kann sich als knifflig erweisen. Wenn Sie schon einmal versucht haben, eine Verbindung zu einem Computer in einer Arbeitsgruppe herzustellen und dabei kryptische Fehlermeldungen zur Authentifizierung oder zu TrustedHosts erhalten haben, sind Sie nicht allein. WinRM (Windows Remote Management) verwendet standardmäßig Kerberos, wofür eine Domäne erforderlich ist. In einer Arbeitsgruppe müssen Sie jedoch auf NTLM zurückgreifen oder sogar SSL-Zertifikate einrichten. Dieser Leitfaden beschreibt, wie Sie PSRemoting in solchen Situationen nutzen können, da Sie manchmal Skripte ausführen oder Remote-PCs neu starten müssen, ohne Active Directory vollständig einrichten zu können. In manchen Fällen funktioniert es sofort, in anderen müssen Sie die Netzwerkprofile, die Firewall und die TrustedHosts-Einstellungen anpassen. Das Ziel? PowerShell-Befehle sicher und zuverlässig remote ausführen zu können, selbst wenn sich diese Computer in einem lokalen Netzwerk ohne Domänenanbindung befinden.

So beheben Sie Probleme mit PowerShell-Remoting in einer Arbeitsgruppenumgebung

Aktivieren Sie den WinRM-Dienst auf dem Remotehost.

Dies ist der erste Schritt. Wenn WinRM nicht läuft, ist alles andere irrelevant. Um es zu verdeutlichen: Ohne den Dienst ist eine Remote-Verbindung unmöglich.– Melden Sie sich an dem Rechner an, zu dem Sie eine Verbindung herstellen möchten (per RDP oder physisch).– Öffnen Sie PowerShell als Administrator.– Prüfen Sie, ob der WinRM-Dienst ausgeführt wird.

Get-Service -Name "WinRM" | select status

– Falls der Dienst nicht läuft, starten Sie ihn und stellen Sie ihn auf automatischen Start ein:

Enable-PSRemoting -Force

Dieser Befehl bewirkt mehrere Dinge gleichzeitig: Er aktiviert WinRM, öffnet Firewall-Regeln und passt einige Standardeinstellungen an. Aber Achtung: Wenn der Netzwerktyp auf Öffentlich eingestellt ist, wird folgender Fehler angezeigt:

Set-WSManQuickConfig :...WinRM firewall exception will not work since one of the network connection types on this machine is set to Public.

Da Windows das Netzwerk als öffentlich erkennt, werden die erforderlichen Firewall-Regeln blockiert. Sie müssen es auf privat ändern: – Ausführen:

Set-NetConnectionProfile -NetworkCategory Private

Oder, falls Sie diese Überprüfung komplett überspringen möchten (nicht besonders sicher, aber schnell), führen Sie Folgendes aus:

Enable-PSRemoting –SkipNetworkProfileCheck

Remoteverbindungen durch die Windows Defender Firewall zulassen

Als Nächstes müssen Sie sicherstellen, dass der TCP-Port 5985 (HTTP) für eingehende Verbindungen geöffnet ist. Dies können Sie mit PowerShell tun: – Wenn Sie nur Verbindungen von der IP-Adresse Ihres Administrator-PCs zulassen möchten (höhere Sicherheit):

Set-NetFirewallRule -DisplayName "Windows Remote Management (HTTP-In)" -RemoteAddress 192.168.13.100 -Action Allow

Oder man öffnet es einfach für alle (weniger sicher, aber manchmal notwendig):

Set-NetFirewallRule -DisplayName "Windows Remote Management (HTTP-In)" -RemoteAddress * -Action Allow

Tipp: Überprüfen Sie immer, ob die Regel aktiviert und aktiv ist:

Get-NetFirewallRule -DisplayName "Windows Remote Management (HTTP-In)"

Konfigurieren Sie TrustedHosts auf dem Clientrechner.

Hier wird es in der Praxis kompliziert: Da Kerberos in einer Arbeitsgruppe nicht verfügbar ist, greift WinRM auf NTLM oder HTTPS zurück. Damit NTLM funktioniert, muss Ihr Clientrechner dem Remoterechner vertrauen.– Fügen Sie auf dem Administrator-PC die IP-Adresse oder den FQDN des Zielrechners zur Liste der vertrauenswürdigen Hosts hinzu.

Set-Item wsman:\localhost\Client\TrustedHosts -Value "192.168.13.222" -Force

– So überprüfen Sie die aktuellen TrustedHosts:

get-Item WSMan:\localhost\Client\TrustedHosts

– So löschen Sie TrustedHosts:

Set-Item WSMan:\localhost\Client\TrustedHosts -Value "" -Force

– Mehrere Elemente addieren (mit -Verketten):

Set-Item WSMan:\localhost\Client\TrustedHosts -Value "192.168.13.222" -Concatenate

Warnung: Die Verwendung von ` *` in TrustedHosts ist so, als würde man die Tür weit offen lassen – nicht empfehlenswert, es sei denn, Sie testen aktiv.

Fernverbindung und Ausführung von Befehlen

Sobald WinRM aktiviert, Firewall-Regeln festgelegt und TrustedHosts konfiguriert sind, sollten Sie die Verbindung testen: – Konnektivität prüfen:

Test-NetConnection 192.168.13.222 -Port 5985

– WinRM auf dem Zielsystem bestätigen:

Test-WsMan 192.168.13.222

Wenn das funktioniert, versuchen Sie, eine Remote-PowerShell-Sitzung zu erstellen:

Enter-PSSession -ComputerName 192.168.13.222 -Credential (Get-Credential)

*Hinweis:* Sie werden zur Eingabe von Anmeldeinformationen aufgefordert. Der Benutzername sollte im Format ` COMPUTERNAME\username` vorliegen oder, falls der Benutzer lokal existiert, einfach der lokale Benutzername sein.Tipp zur Fehlerbehebung: Falls Verbindungs- oder Authentifizierungsfehler auftreten, prüfen Sie, ob der Remotecomputer ausschließlich Kerberos akzeptiert – was in einer Arbeitsgruppe nicht möglich ist – oder ob Sie das Authentifizierungsschema ändern müssen: – Überprüfen Sie das Authentifizierungsschema:

Get-ChildItem -Path WSMan:\localhost\Service\Auth\

– Wenn Sie NTLM verwenden, stellen Sie sicher, dass die TrustedHosts auf den Remote-Servern festgelegt sind und dass Sie nicht versuchen, Kerberos zu verwenden.

Verwenden Sie CredSSP oder HTTPS für mehr Sicherheit.

Da NTLM angreifbar sein kann, insbesondere bei zu hoher Sicherheitsfreigabe, bietet sich die Einrichtung von IIS mit SSL-Zertifikaten auf dem Remote-Rechner an, um eine HTTPS-Verbindung herzustellen, ohne die TrustedHosts-Konfiguration anpassen zu müssen. Alternativ kann CredSSP zur sicheren Delegierung von Anmeldeinformationen verwendet werden, dies ist jedoch eine fortgeschrittenere Methode.

Zusammenfassung der häufigsten Befehle

  • WinRM aktivieren :Enable-PSRemoting -Force
  • Netzwerkprofil auf Privat ändern :Set-NetConnectionProfile -NetworkCategory Private
  • Firewall-Port 5985 öffnen :Set-NetFirewallRule -DisplayName "Windows Remote Management (HTTP-In)" -RemoteAddress * -Action Allow
  • IP-Adresse zu TrustedHosts hinzufügen :Set-Item wsman:\localhost\Client\TrustedHosts -Value "192.168.13.222" -Force
  • Test der WinRM-Verbindung :Test-WsMan 192.168.13.222
  • Verbindung zu Remote-Rechner herstellen :Enter-PSSession -ComputerName 192.168.13.222 -Credential (Get-Credential)

Zusammenfassung

Die Einrichtung von PSRemoting in einer Arbeitsgruppe ist etwas ungewöhnlich, insbesondere da Windows standardmäßig Sicherheitseinstellungen verwendet, die die Remote-Administration ohne Domäne erschweren. Mit den oben genannten Schritten lässt es sich jedoch realisieren. Denken Sie daran, Ihrem Netzwerk zu vertrauen – lassen Sie TrustedHosts nur im Notfall auf * gesetzt. Beachten Sie außerdem, dass in großen oder sensiblen Umgebungen HTTPS oder zertifikatbasierte Authentifizierung die beste Wahl ist. Hoffentlich erspart dies dem einen oder anderen einige Stunden Frust. Es ist nicht immer einfach, aber machbar – zumindest deutlich einfacher als früher.