sdx15 - stock.adobe.com

Wie Sie Windows und Exchange SE per SSH remote verwalten

Windows Server 2025 unterstützt die Remote-Verwaltung per SSH. Diese bietet eine sichere und flexible Alternative zur PowerShell, auch wenn klassische Tools ausfallen.

Es gibt verschiedene Szenarien, in denen Windows-Server remote verwaltet werden müssen. Eine Möglichkeit dafür ist die Nutzung von SSH: einem Protokoll, das ursprünglich aus der Linux-Welt stammt, aber auch unter Windows Server 2025 unterstützt wird. Über SSH können nicht nur Administratoren eine sichere Verbindung aufbauen, sondern auch reguläre Benutzer Zugriff auf bestimmte Dienste erhalten, ohne gleich umfassende Adminrechte zu benötigen.

Dazu wird auf dem Server lediglich der OpenSSH-Server benötigt, im Grunde genommen wie bei Linux. Microsoft hat dazu bereits in Windows Server 2016 eine eigene Portierung von OpenSSH als optionales Feature integriert. Dieses Feature ist in Windows Server 2019/2022 und natürlich auch in Windows Server 2025 verfügbar.

Überprüfung des Status von OpenSSH
Abbildung 1: Überprüfen Sie den Status von OpenSSH in Windows Server 2025.

OpenSSH-Server installieren und einrichten

In der grafischen Oberfläche von Windows Server 2025 sind die optionalen Features in den Einstellungen über System\Optionale Features verfügbar. Anzeigen lässt sich das Feature für den OpenSSH-Server auch in der PowerShell über:

Get-WindowsCapability -Name *openssh* -Online

Der Befehl zeigt an, ob der SSH-Client verfügbar ist und auch ob der OpenSSH-Server vorhanden ist. Die Installation erfolgt wiederum mit:

Add-WindowsCapability -Name "OpenSSH.Server~~~~0.0.1.0" -Online

Damit der Server eine Verbindung per SSH erlaubt, muss der dazu passende Systemdienst gestartet sein. Überprüfen lässt sich der Dienst mit:

Get-Service sshd

Den Dienst starten Sie mit:

Start-Service sshd

Damit der Dienst immer automatisch mit Windows startet, muss der mit dem Starttyp Automatisch konfiguriert werden:

Set-Service -Name sshd -StartupType Automatic

Damit die Windows-Firewall den Zugriff nicht blockiert, muss der Datenverkehr für SSH erlaubt werden. In privaten und Domänenprofilen geht das mit dem folgenden Befehl:

Set-NetFirewallRule -Name OpenSSH-Server-In-TCP -Enabled True -Profile Domain,Private

Überprüfen lässt sich die Regel mit:

Get-NetFirewallRule -Name OpenSSH-Server-In-TCP |select DisplayName, Enabled, Profile
Überprüfung der Firewall-Regeln für den Zugriff per SSH
Abbildung 2: Prüfen Sie die Firewall-Regeln für den Zugriff per SSH auf einem Windows-Server.

SSH-Verbindung aufbauen und PowerShell nutzen

Die SSH-Verbindung lässt sich mit jedem beliebigen SSH-Client aufrufen, auch von Windows 11 und Windows Server 2025 aus, wenn der SSH-Client verfügbar ist. Die Authentifizierung erfolgt zunächst per Benutzername und Kennwort. Auch die Anmeldung mit Active-Directory-Benutzern ist möglich. Die Syntax dazu ist:

ssh <Domäne>\<Benutzer>@<Name oder IP des Servers>

Nach der Authentifizierung mit Kennwort ist die Verbindung aktiv. Standardmäßig stehen die Befehle aus der Befehlszeile zur Verfügung. Mit powershell lässt sich in der SSH-Sitzung aber auch eine PowerShell-Sitzung öffnen. In diesem Fall stehen auch die verschiedenen Cmdlets zur Verwaltung von Windows zur Verfügung.

Exchange SE über SSH verwalten

In der PowerShell lassen sich die Cmdlets von Exchange SE ebenfalls importieren. Dazu ist nicht unbedingt der Start der Exchange Management Shell notwendig. Sobald eine PowerShell-Sitzung geöffnet ist, lassen sich mit dem folgenden Cmdlet die Exchange-Cmdlets laden:

Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn

Das funktioniert auch nach der Verbindung mit SSH. Dazu wird erst die SSH-Verbindung geöffnet, danach mit powershell eine PowerShell-Sitzung und im Anschluss mit dem oberen Befehl die Exchange-Cmdlets geladen. Das ist auch eine Möglichkeit, wenn die Remoteverbindung per PowerShell nicht mehr funktioniert.

Nutzung der PowerShell per SSH
Abbildung 3: Per SSH kann auch die PowerShell genutzt werden. Außerdem lassen sich die Exchange-Cmdlets nutzen, auch von Exchange SE.

Wenn im Netzwerk daher eine Remote-Verwaltung notwendig ist oder Unternehmen neue Windows-Server installieren, kann es sinnvoll sein, SSH in Windows zu aktivieren. Funktionieren andere Remote-Verbindungen nicht mehr, steht als Fallback auch SSH zur Verfügung, inklusive der Remote-Verwaltung mit der PowerShell.

Beispiele für den Einsatz von SSH zur Remote-Verwaltung

Per SSH lassen sich auch gezielt einzelne Windows-Dienste aus der Ferne steuern. Ein klassischer Fall ist das manuelle Neustarten der Druckwarteschlange, etwa nach Problemen mit fehlerhaften Spool-Dateien. Über die Kommandozeile genügt der Befehl ssh [email protected] "net stop spooler", ohne dass ein grafischer Zugriff erforderlich wäre. Der Befehl beendet den Drucker-Spooler. Mit "net start" lässt er sich starten. Genauso können auch andere Befehle aus der Befehlszeile genutzt werden.

Um die laufenden Prozesse auf dem Server zu erfassen, reicht tasklist. Auch ein gezieltes Beenden eines Prozesses wie explorer.exe gelingt ohne PowerShell mit taskkill /IM explorer.exe /F. Das ist hilfreich, wenn sich die grafische Oberfläche aufgehängt hat und ein Neustart vermieden werden soll.

Netzwerktests lassen sich direkt in der CMD-Shell ausführen. Der Befehl ping <Zielhost> zeigt die Erreichbarkeit, netstat -an listet offene Verbindungen und mit nslookup <Hostname> lässt sich die DNS-Auflösung prüfen. Wer einen bestimmten Port testen will, kann über powershell in der SSH-Sitzung wechseln und dann Test-NetConnection -ComputerName <Ziel> -Port <Portnummer> ausführen.

Auch die Systemlast lässt sich ohne PowerShell prüfen. Der Befehl wmic cpu get loadpercentage liefert eine Momentaufnahme der CPU-Auslastung.

Ein Überblick über die Netzwerkkonfiguration des Servers gelingt mit:

ssh joos\[email protected] "ipconfig /all"

Die Ausgabe zeigt IPv4-Adressen, Subnetze, Standard-Gateways und DNS-Konfiguration. Bei Problemen mit Namensauflösungen liefert der folgende Befehl einen schnellen Hinweis auf mögliche Fehlerquellen in der DNS-Zone:

ssh joos\[email protected] "nslookup intranet.joos.local"

Der Status laufender Windows-Dienste lässt sich erfassen mit:

ssh joos\[email protected] "sc query"

Für gezielte Abfragen einzelner Dienste eignet sich der Befehl:

ssh joos\[email protected] "sc query w32time"

Die Rückgabe zeigt Starttyp, Statuscode und letzte Rückmeldung des Diensts. Bei der Suche nach offenen Netzwerkverbindungen liefert der folgende Befehl eine vollständige Liste aktiver Sockets samt PID:

ssh joos\[email protected] "netstat -ano"

Zur Kontrolle geplanter Aufgaben im Hintergrund genügt folgendes:

ssh joos\[email protected] "schtasks /query /fo table"

So lassen sich auch fehlschlagende Routinen ohne grafische Oberfläche identifizieren. Mit ssh joos\[email protected] "query user" werden Benutzersitzungen und RDP-Verbindungen mit einer tabellarischen Ausgabe aktiver Logins, Idle-Zeiten und Session-Ids geprüft. Selbst der verfügbare Speicherplatz auf Laufwerk C lässt sich ohne PowerShell prüfen:

ssh joos\[email protected] "fsutil volume diskfree C:"

Die Rückgabe enthält nutzbaren und belegten Speicherplatz in Byte.

Für detailliertere Diagnosen empfiehlt sich dennoch der Wechsel in die PowerShell nach Aufbau der SSH-Sitzung. Erst dann stehen strukturierte Cmdlets für Eventlogs, Dienste oder Updates zur Verfügung.

Erfahren Sie mehr über Server- und Desktop-Virtualisierung