Installieren, Testen und Deinstallieren eines OpenSSH-basierten SFTP-Servers unter Windows
Diese Anleitung gilt für Windows Server 2019, 2022 und 2025, die OpenSSH Server als integrierte optionale Funktion enthalten. Es ist kein Download von Drittanbietern erforderlich.
Schritt-für-Schritt-Anleitung
Installieren der OpenSSH-Server-Funktion
1) Starten Sie PowerShell als Administrator: Start, geben Sie "PowerShell" ein → Rechtsklick auf "PowerShell" → Als Administrator ausführen.
2) Prüfen Sie, ob die OpenSSH-Server-Funktion bereits installiert ist:
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*' | Select-Object Name, State

Hinweis: Hier werden sowohl OpenSSH.Client als auch OpenSSH.Server aufgeführt. Achten Sie darauf, gezielt den Status von OpenSSH.Server zu prüfen, die Client-Komponente ist möglicherweise bereits installiert und ist nicht Gegenstand dieser Anleitung.
Wenn bei OpenSSH.Server der Status State : NotPresent angezeigt wird, installieren Sie die Funktion:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

Hinweis: Windows installiert die integrierte OpenSSH-Server-Funktion unter C:\Windows\System32\OpenSSH\. Installieren Sie OpenSSH nicht manuell direkt unter C:\Windows, dies verstößt gegen die Windows-Verzeichniskonventionen und kann zu Berechtigungsproblemen führen.
3) Starten Sie den Dienst sshd und legen Sie fest, dass er automatisch startet:
Start-Service sshd Set-Service -Name sshd -StartupType 'Automatic'
4) Überprüfen Sie, ob der Dienst läuft:
Get-Service sshd

Im Feld Status sollte Running stehen. Um zusätzlich zu bestätigen, dass der Starttyp auf Automatic gesetzt ist:
Get-CimInstance Win32_Service -Filter "Name='sshd'" | Select-Object StartMode

5) Überprüfen Sie den Speicherort und die Versionsinformationen der installierten OpenSSH-Binärdatei:
Get-Command sshd | Select-Object Source (Get-Command sshd).FileVersionInfo

Das Feld Source bestätigt, dass der Installationspfad C:\Windows\System32\OpenSSH\sshd.exe entspricht; FileVersionInfo zeigt die OpenSSH-Version an (zum Beispiel OpenSSH_8.1p1, FileVersion 8.1.0.1 unter Windows Server 2022).
Öffnen des Firewall-Ports
Bei der Installation der OpenSSH-Server-Funktion wird normalerweise automatisch eine eingehende Firewall-Regel mit dem Namen OpenSSH-Server-In-TCP erstellt. Bestätigen Sie, dass sie vorhanden und aktiviert ist:
Get-NetFirewallRule -Name *OpenSSH-Server*

Falls die Regel fehlt, erstellen Sie sie manuell (beachten Sie den abweichenden Regelnamen, diese manuell erstellte Regel ist von der automatisch generierten Regel OpenSSH-Server-In-TCP getrennt):
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
Überprüfen Sie, ob der Port tatsächlich geöffnet ist und auf Verbindungen wartet:
Test-NetConnection -ComputerName localhost -Port 22

Ein Ergebnis von TcpTestSucceeded : True bestätigt, dass der Dienst lokal auf Verbindungen wartet. Dies bestätigt nicht, dass die Firewall Datenverkehr von außen durchlässt, um dies vollständig zu überprüfen, führen Sie denselben Befehl von einem anderen Rechner im Netzwerk aus und ersetzen Sie localhost durch die IP-Adresse des Servers.
Konfigurieren von sshd_config für SFTP
Die Konfigurationsdatei befindet sich unter:
C:\ProgramData\ssh\sshd_config
Öffnen Sie sie in einem Texteditor mit Administratorrechten (zum Beispiel Notepad als Administrator ausgeführt) und stellen Sie sicher, dass die folgenden Einstellungen vorhanden (oder nach Bedarf konfiguriert) sind:
Port 22 PasswordAuthentication yes Subsystem sftp sftp-server.exe

Sicherheitshinweis: PasswordAuthentication yes wird hier verwendet, um diese Anleitung einfach zu halten, aber für einen produktiv im Internet erreichbaren Server ist die schlüsselbasierte Authentifizierung mit PasswordAuthentication no die sicherere Wahl. Siehe die optionale Einstellung AuthorizedKeysFile weiter unten, falls Sie die schlüsselbasierte Authentifizierung verwenden möchten.
Wichtig: Die Zeile Subsystem sftp legt fest, welche Binärdatei SFTP-Sitzungen verarbeitet. Ohne diese vorhandene und nicht auskommentierte Zeile funktionieren SSH-Verbindungen zwar, aber die SFTP-Dateiübertragung schlägt fehl.
Standardmäßig ist diese Zeile in der Konfigurationsdatei der integrierten Funktion bereits vorhanden und nicht auskommentiert. Falls sie fehlt oder mit # auskommentiert ist, fügen Sie sie hinzu oder entfernen Sie das Kommentarzeichen und speichern Sie anschließend die Datei.
Hinweis: Neuere OpenSSH-Versionen unterstützen auch Subsystem sftp internal-sftp, einen integrierten Handler, der keine externe Binärdatei aufruft:
Subsystem sftp internal-sftp
Sowohl sftp-server.exe als auch internal-sftp funktionieren; diese Anleitung verwendet sftp-server.exe, da dies der standardmäßig ausgelieferte Wert ist.
Optionale Einstellungen, die Sie ebenfalls in sshd_config aufnehmen möchten:
# Standardwert, bereits gesetzt; hier zur Referenz angegeben, falls die schluesselbasierte Authentifizierung nicht funktioniert # AuthorizedKeysFile .ssh/authorized_keys # Zugriff auf bestimmte Benutzer beschraenken (optional) # AllowUsers username1 username2 # Protokollierung SyslogFacility LOCAL0 LogLevel INFO
Hinweis: Für Konten, die Mitglieder der lokalen Gruppe Administratoren sind, verwendet die Windows-Portierung von OpenSSH eine andere Datei: C:\ProgramData\ssh\administrators_authorized_keys, nicht .ssh\authorized_keys im Benutzerprofil. Falls die schlüsselbasierte Authentifizierung für ein Administratorkonto nicht wie erwartet funktioniert, prüfen Sie stattdessen diese Datei.
Starten Sie nach jeder Änderung an sshd_config den Dienst neu, um sie anzuwenden:
Restart-Service sshd
Überprüfen der SFTP-Verbindung mit WinSCP
Installieren und starten Sie den kostenlosen WinSCP-Client. Wählen Sie im Fenster mit den Verbindungseinstellungen das SFTP-Dateiübertragungsprotokoll, geben Sie den Hostnamen oder die IP-Adresse des Servers in das Feld Host name ein, belassen Sie das Feld Port number auf 22 (sofern Sie keinen anderen Port konfiguriert haben) und geben Sie die Anmeldedaten des Windows-Kontos ein, mit dem Sie sich verbinden.

Wenn alles korrekt eingerichtet ist, stellt der Client eine Verbindung zum SFTP-Server her und zeigt den Inhalt des Home-Verzeichnisses des Benutzers an (das Standard-Profilverzeichnis). Standardmäßig landet der Benutzer in C:\Users\<username>. Dateien können dann sicher über das SFTP-Protokoll zwischen Server und Client übertragen werden.

Deinstallieren der OpenSSH-Server-Funktion
1) Starten Sie PowerShell als Administrator.
2) Stoppen Sie den Dienst sshd, bevor Sie die Funktion entfernen, ein Entfernen, während der Dienst noch läuft oder aktiv genutzt wird, kann fehlschlagen oder hängen bleiben:
Stop-Service sshd
3) Entfernen Sie die Funktion:
Remove-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
4) (Optional) Entfernen Sie die Firewall-Regel. Dies deckt sowohl die automatisch erstellte als auch die manuell erstellte Regel ab, falls eine davon existiert:
Remove-NetFirewallRule -Name OpenSSH-Server-In-TCP -ErrorAction SilentlyContinue Remove-NetFirewallRule -DisplayName 'OpenSSH Server (sshd)' -ErrorAction SilentlyContinue
5) (Optional) Konfiguration entfernen: Sie können entweder nur die Konfigurationsdatei entfernen oder eine vollständige Bereinigung einschließlich der Host-Schlüssel durchführen.
Um nur sshd_config zu entfernen, ohne die Host-Schlüssel anzutasten:
Remove-Item -Path 'C:\ProgramData\ssh\sshd_config' -Force
Für eine vollständige Bereinigung einschließlich der Host-Schlüssel entfernen Sie stattdessen den gesamten Konfigurationsordner:
Remove-Item -Path 'C:\ProgramData\ssh' -Recurse -Force
Warnung: Beim Entfernen des gesamten Ordners werden auch die Host-Schlüssel des Servers dauerhaft gelöscht. Clients, die sich nach einer Neuinstallation verbinden, behandeln den Server als neuen, unbekannten SSH-Host. Führen Sie dies nur aus, wenn Sie nicht planen, OpenSSH Server später mit derselben Konfiguration neu zu installieren.