Windows 2025 per SSH fernsteuern

Wer einen Linux-Server administriert, nutzt in vielen Fällen SSH zur sicheren Kommunikation. Unter Windows war dies bis zuletzt nur durch Installation zusätzlicher Software möglich. Windows 11 und Windows Server 2025 bringen jedoch Unterstützung für SSH von Hause aus mit. Dieser Blog-Artikel zeigt Euch, wie Ihr SSH unter Windows nutzen könnt.

Einführung

Secure Shell (SSH) ist ein Netzwerkprotokoll zum sicheren Fernsteuern von Netzwerkdiensten über ein unsicheres Netzwerk (z.B. das Internet). Typische Applikationen, die SSH unterstützen, sind Kommandozeilenwerkzeuge (z.B. Putty) sowie spezielle Administrationswerkzeuge (z.B. pgAdmin). SSH ist für viele Administratoren der präferierte Weg zum Fernsteuern von Linux-Computern. Da ein Linux-Server in der Regel keine GUI besitzt, muss mit der Kommandozeile gearbeitet werden, SSH verlagert die Eingabe und Ausgabe dabei auf Deinen lokalen Rechner.

Mit Windows 11 kann per Kommandozeile eine SSH-Verbindung zu einem entfernten SSH-Server aufgebaut werden. Parallel zu Windows 11 hat auch der Windows Server 2025 einen SSH-Serverdienst spendiert bekommen, so dass eine Fernwartung in einer modernen Windows-Umgebung komplett per SSH erfolgen kann.

Windows 11 bzw. 2025 nutzen eine spezielle Version von OpenSSH. OpenSSH ist eine Sammlung von Server- und Client-Komponenten zum Aufbau einer SSH-Infrastruktur.

OpenSSH hat seine Wurzeln in der Unix-Welt und war bis vor kurzem nicht kompatibel mit Windows. Microsoft entwickelt deshalb mit Portable OpenSSH eine an Windows angepasste Version von OpenSSH, die auf einem Fork des Originalquellcodes basiert. Das langfristige Ziel ist, den Code mit der offiziellen Version wieder zu vereinigen.

OpenSSH-Server installieren

Standardmäßig ist OpenSSH ab Windows Server 2025 bereits installiert.

  1. Öffne die PowerShell-Konsole als Administrator und gibt folgenden Befehl ein:

    Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH.Server*'
    

    Es sollte folgende Ausgabe erscheinen:

    Name  : OpenSSH.Server~~~~0.0.1.0
    State : Installed
    

    Bei Misserfolg kannst Du den OpenSSH-Server wie folgt nachinstallieren:

    Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
    
  2. Wenn Du wissen willst, welche OpenSSH-Version genau installiert ist, tippe folgendes ein:

    sshd -V
    
  3. Standardmäßig ist der SSH-Dienst (sshd) deaktiviert. Um Ihn zum Laufen zu bringen, musst Du ihn starten:

    Start-Service sshd
    

    Damit er auch einen Serverneustart überlebt, musst Du den Starttyp des Diensts auf “Automatisch” setzen

    Set-Service -Name sshd -StartupType 'Automatic'
    
  4. Will Du überprüfen, ob der OpenSSH-Dienst läuft? Voià:

    Get-Service sshd
    

Dein Windows Server 2025 ist jetzt bereit und kann auf SSH-Anfragen antworten. Bitte achte darauf, dass bei Einsatz einer externen Firewall der TCP-Port 22 freigeschaltet ist.

Noch ein letzter PowerShell-Befehl:

Get-ChildItem c:\ProgramData\ssh\ssh_host_*_key | ForEach-Object { ssh-keygen -l -f $_ }

Dir werden jetzt alle öffentlichen Key Fingerprints (Schlüssel-Fingerabdrücke) des OpenSSH-Servers aufgelistet.

Beim Erstzugriff eines OpenSSH-Clients wird Dir ebenfalls ein Key Fingerprint angezeigt, und Du wirst gefragt, ob es sich beim angefragten Computer auch wirklich um den gewünschten SSH-Server handelt. Um diese Frage zu beantworten, muss der ausgewiesene Key Fingerprint mit einem der hier aufgelisteten Key Fingerprints übereinstimmen.

Natürlich kann man SSH unter Windows 2025 weiter konfigurieren. Weitere Infos in der Manpage für sshd_config.

OpenSSH-Server aktualisieren

Die standardmäßige Installation von OpenSSH unter Windows Server 2025 ist auf den ersten Blick eine feine Sache. Allerdings stellt man schnell fest, dass über das normale Windows-Update keine regelmäßigen Updates von OpenSSH eingespielt werden (Stand Oktober 2025).

Seit Version 8.9.1.0 kann man OpenSSH auch bequem via WinGet installieren. Das machen wir uns zu Nutze und schauen zunächst, welche Version uns denn zur Verfügung steht:

winget search Microsoft.OpenSSH

Ist die Version wesentlich neuer, lohnt es sich zu Aktualisieren (eigentlich lohnt es sich immer). Bevor wir dies jedoch tun, müssen wir die Standardinstallation von OpenSSH herunterschmeißen. Leider verträgt die sich nicht mit der WinGet-Variante.

Also weg damit:

Remove-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
Remove-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

Und gleich danach neu via WinGet:

winget install Microsoft.OpenSSH.Preview

Und jetzt noch die uns bereits bekannte Befehlssequenz und fertig:

Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'

Zum Konfigurieren der Windows-Firewall führe folgenden Befehl aus:

New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

Sollte Windows Server den Dienst sshd nicht finden, dann ist sehr wahrscheinlich die PATH-Umgebungsvariable nicht aktualisiert worden. Dort muss der Installationspfad C:\Program Files\OpenSSH drin stehen. Außerdem lohnt es sich u.U. die PowerShell einmal zu schließen und anschließend wieder zu öffnen.

Zukünftige Updates von OpenSSH können jetzt bequem mit WinGet eingespielt werden:

winget upgrade Microsoft.OpenSSH.Preview

OpenSSH-Client unter Windows 11

Der OpenSSH-Client unter Windows 11 ist standardmäßig installiert und kann sofort genutzt werden. Genau das machen wir jetzt auch und versuchen unseren soeben konfigurierten Windows Server per SSH zu erreichen.

Wir gehen dabei von folgender Konfiguration aus (alles nur Beispieldaten, die es real so nicht gibt):

Server:

  • DNS-Name: myserver.beispiel.de
  • Benutzername des Administrators: frank

Client:

  • DNS-Name: myhost
  • Benutzername: frank

Authentifizierung mit Kennwort

Öffne auf Deinem Windows 11-Rechner die Windows-Kommandozeile und tippe folgendes ein:

ssh frank@myserver.beispiel.de

Beim ersten Start wird der Key Fingerprint des Servers angezeigt, und Du wirst gefragt, ob Du dich wirklich mit diesem Server verbinden möchtest.

The authenticity of host 'myserver.beispiel.de (159.69.60.4)' can't be established.
ECDSA key fingerprint is SHA256:CxIuAEc3SZThY9XobrjJIHN61OTItAU0Emz0v/+15wY.
Are you sure you want to continue connecting (yes/no)?

Du solltest zunächst überprüfen, ob der angezeigte Key Fingerprint auch wirklich von Deinem Server stammt (siehe vorherigen Abschnitt). Bestätige anschließend mit yes und der Server wird in die lokale Liste der bekannten Rechner eingetragen. Diese Abfrage siehst Du nur beim aller ersten Zugriff auf Deinen Windows Server.

Anschließend wirst Du nach dem Kennwort des Benutzers frank auf dem Server myserver.beispiel.de gefragt. Tippe es ein und Du hast Fernzugriff auf Deinen Server.

Der OpenSSH-Client speichert die Liste der bekannten Rechner (Known Hosts) in einer Textdatei. Du kannst Sie Dir mit folgendem Befehl anzeigen lassen:

notepad "%USERPROFILE%\.ssh\known_hosts"

Authentifizierung mit SSH-Schlüssel

Hierbei musst Du einmalig ein Schlüsselpaar mit einem privaten und einem öffentlichen Schlüssel generieren. Der öffentliche Schlüssel wird auf dem SSH-Server hinterlegt, der private Schlüssel bleibt auf Deinem lokalen Rechner. Die Authentifizierung erfolgt nun durch das Versenden eines mit dem öffentlichen Schlüssel kodierten Datenpakets vom SSH-Server zum SSH-Client, der dieses mit seinem privaten Schlüssel wieder dekodieren muss. Ist die Dekodierung erfolgreich, bist Du authentifiziert.

Ein Schlüsselpaar erzeugen

Öffne auf Deinem Windows 11-Rechner die Windows-Kommandozeile und tippe folgendes ein:

cd %USERPROFILE%\.ssh\
ssh-keygen -t ed25519

Du bekommst folgende Meldung angezeigt:

Generating public/private ed25519 key pair.
Enter file in which to save the key (C:\Users\frank/.ssh/id_ed25519):

Bestätige mit der Eingabetaste.

Jetzt wirst Du gefragt, ob Du ein Kennwort zum Absichern Deines privaten Schlüssels definieren möchtest. Dies ist dringend zu empfehlen.

Enter passphrase (empty for no passphrase):

Das einmal eingegebene Kennwort musst Du zur Sicherheit noch einmal wiederholen:

Enter same passphrase again:

Jetzt wird ein neues Schlüsselpaar generiert und eine Meldung wie diese erscheint in Deiner Kommandozeile:

Your identification has been saved in C:\Users\frank/.ssh/id_ed25519.
Your public key has been saved in C:\Users\frank/.ssh/id_ed25519.pub.
The key fingerprint is:
SHA256:7KMZvJiITZ+HbOyqjNPV5AeC5As2GSZES5baxy1NIe4 myhost@Frank
The key's randomart image is:
+--[ED25519 256]--+
|E   ..o=*o.+o    |
|.   .oo+oo...    |
|....  o=..       |
| o+. o  =        |
|o .oo ooS.       |
|* ...+o oo       |
|oo.. o+o+o       |
| .   o+o+o       |
|      .o..       |
+----[SHA256]-----+

Die Meldung bedeutet, dass in der Datei C:\Users\frank\.ssh\id_ed25519 der private Schlüssel und in der Datei C:\Users\frank\.ssh\id_ed25519.pub der öffentliche Schlüssel gespeichert wurde.

Den öffentlichen Schlüssel für Administratoren verteilen

Der private Schlüssel ist privat und darf unter keinen Umständen veröffentlicht werden. Der öffentliche Schlüssel muss jedoch dem Windows Server bekanntgemacht werden. Als Server-Administrator musst Du die Datei

%USERPROFILE%\.ssh\id_ed25519.pub

von Deinem lokalen Windows 11-Computer kopieren und auf dem Windows Server unter dem neuen Pfad

c:\ProgramData\ssh\administrators_authorized_keys

ablegen (Achtung: Zieldatei hat keine Dateiendung).

Ganz wichtig ist, der Datei administrators_authorized_keys die passenden Zugriffsrechte zu erteilen. Dazu die PowerShell-Konsole als Administrator öffnen und folgende Befehlssequenz ausführen:

$acl = Get-Acl C:\ProgramData\ssh\administrators_authorized_keys
$acl.SetAccessRuleProtection($true, $false)
$administratorsRule = New-Object system.security.accesscontrol.filesystemaccessrule("Administrators","FullControl","Allow")
$systemRule = New-Object system.security.accesscontrol.filesystemaccessrule("SYSTEM","FullControl","Allow")
$acl.SetAccessRule($administratorsRule)
$acl.SetAccessRule($systemRule)
$acl | Set-Acl

Diese Befehle haben folgende Bedeutung: Zunächst werden die Zugriffsregeln der Datei vor Vererbung geschützt, anschließend werden der Administratoren-Gruppe sowie dem lokalen Systemkonto volles Zugriffsrecht auf die Datei gewährt. Standardbenutzer haben also keinen Zugriff (siehe nächsten Abschnitt).

Sollte die Datei administrators_authorized_keys schon existieren, musst Du den Inhalt aus id_ed25519.pub als neue Zeile in diese Datei anfügen

Bei einer Authentifizierung per SSH-Schlüssel sollte die Authentifizierung per Kennwort unterbunden werden. Andernfalls läuft der sicherheitstechnische Vorteil des SSH-Schlüssels ins Leere. Öffne dazu die folgende Datei in einem Texteditor Deiner Wahl:

C:\ProgramData\ssh\sshd_config

Dort ändere die Zeile

# PasswordAuthentication yes

ab in

PasswordAuthentication no

Speichere die Konfigurationsdatei und starte den OpenSSH-Serverdienst neu. Tippe dazu in der PowerShell-Konsole folgenden Befehl ein:

Restart-Service sshd

Den öffentlichen Schlüssel für Standardbenutzer verteilen

Für Standardbenutzer unter Windows Server 2025 gilt im Wesentlichen das gleiche wie für Mitglieder der Administratorengruppe, nur dass der öffentliche Schlüssel woanders abgelegt werden muss. Als Standardbenutzer musst Du die Datei

%USERPROFILE%\.ssh\id_ed25519.pub

von Deinem lokalen Windows 11-Computer kopieren und auf dem Windows Server unter dem neuen Pfad

%USERPROFILE%\.ssh\authorized_keys

ablegen (Achtung: Zieldatei hat keine Dateiendung). Existiert das Verzeichnis C:\Users\frank\.ssh nicht, musst Du es zunächst anlegen:

New-Item -ItemType directory -Path %USERPROFILE%\.ssh

Testen

Öffne auf Deinem Windows 11-Rechner die Windows-Kommandozeile und tippe folgendes ein:

ssh frank@myserver.beispiel.de

Du wirst nun nach dem Kennwort Deines privaten Schlüssels gefragt.

Enter passphrase for key 'C:\Users\frank/.ssh/id_ed25519':

Tippe es ein, und Du hast Fernzugriff auf Deinen Server.

Kennwort oder SSH Schlüssel?

Die meisten Tutorials empfehlen den SSH-Schlüssel als sicherste Alternative. Bei dieser Methode verlässt der SSH-Schlüssel nicht Deinen Rechner, kann also weder abgefangen noch durch einen Brute-Force-Angriff erraten werden. Dies setzt allerdings voraus, dass Dein Client-Computer abgesichert ist und auch bei einem Diebstahl nicht sofort geknackt werden kann, denn der private SSH-Schlüssel ist dort dauerhaft gespeichert. Es wird daher dringend empfohlen, den privaten SSH-Schlüssel mit einem starken Kennwort zu schützen.

SFTP

Bei der Arbeit mittels SSH kommt man schnell zu dem Punkt, wo man sich einen grafischen Datei-Manager wünscht. Genau hier kommt ein weiteres Netzwerkprotokoll ins Spiel: Das Secure File Transfer Protocol (kurz SFTP).

SFTP dient zur sicheren Dateiübertragung über SSH und wird von den gängigen Datei-Managern unter Windows unterstützt. Zwei wunderbare Open-Source-Beispiele wären:

Eine Installation auf Serverseite ist nicht nötig. SFTP ist durch die Installation von OpenSSH unter Windows Server 2025 bereits freigeschaltet und kann sofort genutzt werden.

Wenn Du es genauer wissen möchtest, kannst Du noch einmal einen Blick in die SSH-Konfigurationsdatei C:\ProgramData\ssh\sshd_config werfen. Dort findest Du folgenden Eintrag:

# override default of no subsystems
Subsystem sftp sftp-server.exe

Natürlich kann man auch SFTP unter Windows Server 2025 weiter konfigurieren. Weitere Infos in der Manpage für sshd_config.

PowerShell-Remoting

PowerShell-Remoting ermöglicht, Befehle und Skripte auf entfernten Systemen auszuführen.

Normalerweise nutzt Windows dafür WinRM (unter HTTP/HTTPS). Seit PowerShell 7 gibt es aber die Option, den Transport über SSH laufen zu lassen. Die Vorteile sind:

  • Kein Einsatz von WinRM mehr nötig
  • Kommunikation über SSH-Port 22/TCP
  • Authentifizierung mittels SSH-Schlüssel
  • Plattformübergreifend nutzbar

Die Voraussetzungen dafür sind:

  • Du musst PowerShell 7 auf Client und Server installiert haben. Das geht wieder am Einfachsten mittels WinGet:

    winget install --id Microsoft.PowerShell
    
  • In der Konfigurationsdatei sshd_config musst Du den Subsystem-Eintrag ergänzen:

    # override default of no subsystems
    Subsystem  sftp	       sftp-server.exe
    Subsystem  powershell  "C:\Program Files\PowerShell\7\pwsh.exe" -sshs -NoLogo -NoProfile
    

    Anschließend den OpenSSH-Serverdienst neu starten:

    Restart-Service sshd
    

Jetzt kannst Du von Deinem Windows 11-Rechner das PowerShell-Remoting wie folgt starten (Wichtig: Du musst das zwingend mit PowerShell 7 machen):

Enter-PSSession -HostName myserver.beispiel.de -UserName frank -SSHTransport -KeyFilePath "$env:USERPROFILE\.ssh\id_ed25519"

Artikelhistorie

  • 12.11.2019
    • Erstveröffentlichung
  • 05.02.2021
    • Komplette Überarbeitung des Artikels
  • 07.10.2025
    • Update auf Windows Server 2025
    • Neuer Abschnitt zu PowerShell-Remoting
Das könnte dich auch interessieren:
  1. OpenSSH absichern
  2. PowerShell 7 unter Windows 11
  3. GitHub + SSH unter Windows 10
  4. OpenSSH nach PPK unter Windows
  5. HTTPS unter IIS 10
Teile diesen Artikel