Installation, Test und Deinstallation eines OpenSSH-basierten SFTP-Servers unter Windows | INTROSERV
EUR
european

EUR

usa

USD

German De
Ex. VAT Ex. VAT 0%

So richten Sie einen SFTP-Server unter Windows mit OpenSSH ein

Diese Anleitung gilt für Windows Server 2019, 2022 und 2025, bei denen der OpenSSH-Server als integrierte optionale Funktion enthalten ist. Ein Download von Drittanbietern ist nicht erforderlich.

Schritt-für-Schritt-Anleitung

Installieren der OpenSSH-Server-Funktion

1. Starten Sie PowerShell als Administrator: „Start“, geben Sie „PowerShell“ ein → klicken Sie mit der rechten Maustaste auf„PowerShell“ → „Als Administrator ausführen“.

2. Überprüfen Sie, ob die OpenSSH-Server-Funktion bereits installiert ist:

Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*' | Select-Object Name, State

Checking whether the OpenSSH Server feature is installed

Tip

Hier werden sowohl „OpenSSH.Client“ als auch „OpenSSH.Server“ aufgeführt . Achten Sie darauf, speziell den Status von „OpenSSH.Server“ zu überprüfen; die Client-Komponente ist möglicherweise bereits installiert und wird in dieser Anleitung nicht behandelt.

Wenn „OpenSSH.Server“ den Status „NotPresent“ anzeigt, installieren Sie die Funktion:

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

Installing the OpenSSH Server feature in PowerShell

Warning

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 Verzeichniskonventionen von Windows und kann zu Berechtigungsproblemen führen.

3. Starten Sie den sshd-Dienst und richten Sie ihn so ein, dass er automatisch gestartet wird:

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

4. Überprüfen Sie, ob der Dienst läuft:

Get-Service sshd

OpenSSH sshd service status showing Running

Im Feld „Status“ sollte „Running“ angezeigt werden. Um zu überprüfen, ob der Starttyp auf „Automatisch“ gesetzt ist:

Get-CimInstance Win32_Service -Filter "Name='sshd'" | Select-Object StartMode

sshd service StartMode showing Auto

5. Überprüfen Sie den Speicherort der installierten OpenSSH-Binärdatei und die Versionsinformationen:

Get-Command sshd | Select-Object Source (Get-Command sshd).FileVersionInfo

sshd binary path and version information

Das Feld „Quelle“ bestätigt, dass der Installationspfad mit „C:\Windows\System32\OpenSSH\sshd.exe“ übereinstimmt ; „FileVersionInfo“ zeigt die OpenSSH-Version an (z. B. „OpenSSH_8.1p1“, „FileVersion 8.1.0.1“ unter Windows Server 2022).

Öffnen des Firewall-Ports

Standardmäßig wird bei der Installation der OpenSSH-Server-Funktion normalerweise automatisch eine eingehende Firewall-Regel mit dem Namen „OpenSSH-Server-In-TCP“ erstellt. Überprüfen Sie, ob diese vorhanden und aktiviert ist:

Get-NetFirewallRule -Name *OpenSSH-Server*

OpenSSH inbound firewall rule enabled

Falls die Regel fehlt, erstellen Sie sie manuell (beachten Sie den abweichenden Regelnamen; diese manuell erstellte Regel ist unabhängig von der automatisch generierten Regel „OpenSSH-Server-In-TCP“ ):

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 offen ist und auf Verbindungen wartet:

Test-NetConnection -ComputerName localhost -Port 22

Test-NetConnection to port 22 succeeded

Ein Ergebnis „TcpTestSucceeded : True“ bestätigt, dass der Dienst lokal empfangsbereit ist. Dies bestätigt jedoch 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 dabei „localhost“ durch die IP-Adresse des Servers.

Konfiguration von „sshd_config“ für SFTP

Die Konfigurationsdatei befindet sich unter:

C:\ProgramData\ssh\sshd_config

Öffnen Sie sie in einem Texteditor mit Administratorrechten (z. B. „Notepad“ als Administrator ausführen) und stellen Sie sicher, dass die folgenden Einstellungen vorhanden sind (bzw. nach Bedarf konfiguriert wurden):

Port 22 PasswordAuthentication yes Subsystem sftp sftp-server.exe

sshd_config Subsystem sftp line

Info

„PasswordAuthentication yes“ wird hier zur Vereinfachung dieser Anleitung angezeigt, aber für einen Produktionsserver, der mit dem Internet verbunden ist, ist die schlüsselbasierte Authentifizierung mit „PasswordAuthentication no“ die sicherere Wahl. Siehe die optionale Einstellung „AuthorizedKeysFile“ weiter unten, wenn Sie die schlüsselbasierte Authentifizierung verwenden möchten.

Warning

Die Zeile „Subsystem sftp“ legt fest, welche Binärdatei SFTP-Sitzungen verarbeitet. Wenn diese Zeile nicht vorhanden oder auskommentiert ist, 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 einem # auskommentiert ist, fügen Sie sie hinzu oder entfernen Sie die Auskommentierung und speichern Sie anschließend die Datei.

Info

Neuere OpenSSH-Versionen unterstützen auch das 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; in dieser Anleitung wird „sftp-server.exe“ verwendet, da dies der standardmäßig ausgelieferte Wert ist.

Optionale Einstellungen, die Sie möglicherweise ebenfalls in „sshd_config“ vornehmen möchten:

# Default value, already set; shown here for reference if key-based authentication isn't working # AuthorizedKeysFile .ssh/authorized_keys # Restrict access to specific users (optional) # AllowUsers username1 username2 # Logging SyslogFacility LOCAL0 LogLevel INFO

Info

Für Konten, die Mitglieder der lokalen Administratorengruppe sind, verwendet der Windows-Port von OpenSSH eine andere Datei: C:\ProgramData\ssh\administrators_authorized_keys, nicht .ssh\authorized_keys im Benutzerprofil. Wenn die schlüsselbasierte Authentifizierung für ein Administratorkonto nicht wie erwartet funktioniert, überprüfen Sie stattdessen diese Datei.

Starten Sie den Dienst nach jeder Änderung an der Datei „sshd_config“ neu, um die Änderungen zu übernehmen:

Restart-Service sshd

Überprüfen der SFTP-Verbindung mit WinSCP

Installieren und starten Sie den kostenlosen WinSCP-Client. Wählen Sie im Fenster „Verbindungseinstellungen“ das SFTP-Dateiübertragungsprotokoll aus, geben Sie den Hostnamen oder die IP-Adresse des Servers in das Feld „Hostname“ ein, belassen Sie den Wert im Feld „Portnummer“ auf 22 (sofern Sie keinen anderen Port konfiguriert haben) und geben Sie die Anmeldedaten des Windows-Kontos ein, mit dem Sie die Verbindung herstellen möchten.

WinSCP login window with SFTP protocol selected

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

WinSCP connected to the SFTP server showing the home directory

Deinstallieren der OpenSSH-Server-Funktion

1. Starten Sie PowerShell als Administrator.

2. Beenden Sie den sshd-Dienst, bevor Sie die Funktion entfernen. Das Entfernen der Funktion, während der Dienst noch läuft oder aktiv genutzt wird, kann zu Fehlern oder einem Hängenbleiben führen:

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 betrifft sowohl die automatisch erstellte als auch die manuell erstellte Regel, falls eine davon vorhanden ist:

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 Hostschlüssel durchführen.

Um nur die Datei „sshd_config“ zu entfernen, ohne die Hostschlüssel zu berühren:

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

Warning

Durch das Entfernen des gesamten Ordners werden auch die Host-Schlüssel des Servers dauerhaft gelöscht. Clients, die sich nach der Neuinstallation verbinden, behandeln den Server als neuen, unbekannten SSH-Host. Führen Sie diesen Schritt nur durch, wenn Sie nicht vorhaben, OpenSSH Server später mit derselben Konfiguration neu zu installieren.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA