SFTP
SFTP (SSH File Transfer Protocol) ist ein sicheres Dateiübertragungsprotokoll, das auf SSH basiert und verschlüsselte Dateitransfers über Port 22 ermöglicht.
SFTP (SSH File Transfer Protocol) ist ein Netzwerkprotokoll für den sicheren Dateizugriff, die Dateiübertragung und die Dateiverwaltung über eine verschlüsselte Verbindung. Im Gegensatz zum klassischen FTP überträgt SFTP alle Daten und Befehle verschlüsselt über das SSH-Protokoll. Du kannst dir SFTP als eine sichere Alternative zu FTP vorstellen, bei der niemand deine übertragenen Dateien oder Zugangsdaten mitlesen kann.
Wie funktioniert SFTP?
SFTP arbeitet nach dem Client-Server-Modell. Der Client stellt eine Verbindung zum Server her, authentifiziert sich und kann dann Dateien hoch- oder herunterladen, Verzeichnisse erstellen oder Dateiberechtigungen ändern. Der entscheidende Unterschied zu FTP: Die gesamte Kommunikation läuft über einen einzigen verschlüsselten SSH-Kanal.
Der Verbindungsaufbau erfolgt in mehreren Schritten:
- Der Client sendet ein INIT-Paket mit seiner unterstützten Protokollversion an den Server
- Der Server antwortet mit einem VERSION-Paket und bestätigt die verwendete Version
- Nach erfolgreicher Authentifizierung steht der verschlüsselte Kanal für Dateioperationen bereit
- Alle weiteren Befehle (OPEN, READ, WRITE, CLOSE) werden über diesen Kanal übertragen
Die wichtigsten SFTP-Operationen umfassen das Öffnen und Schließen von Dateien, das Lesen und Schreiben von Daten sowie das Abfragen von Dateiattributen. Jede Operation erhält eine Statusmeldung zurück, die Erfolg oder Fehler signalisiert.
Port und Netzwerkkonfiguration
SFTP nutzt ausschließlich Port 22 - den Standardport des SSH-Protokolls. Das ist ein wesentlicher Vorteil gegenüber klassischem FTP, das separate Ports für Steuerung (Port 21) und Datenübertragung (Port 20) benötigt. Die Verwendung eines einzigen Ports macht SFTP deutlich firewall-freundlicher, da nur ein Port in der Firewall geöffnet werden muss.
| Protokoll | Steuerungsport | Datenport | Firewall-Komplexität |
|---|---|---|---|
| FTP | 21 | 20 (+ dynamische Ports) | Hoch |
| FTPS | 21 (+ SSL/TLS) | 20 (+ dynamische Ports) | Hoch |
| SFTP | 22 | 22 (gleicher Kanal) | Niedrig |
In manchen Umgebungen konfigurieren Administratoren den SSH-Server auf einem anderen Port als 22, um automatisierte Angriffe zu erschweren. In diesem Fall muss der SFTP-Client entsprechend konfiguriert werden.
Authentifizierungsmethoden
SFTP unterstützt verschiedene Authentifizierungsverfahren, die auf dem SSH-Protokoll basieren. Du kannst je nach Sicherheitsanforderung und Infrastruktur die passende Methode wählen.
Passwort-Authentifizierung
Die einfachste Methode ist die klassische Kombination aus Benutzername und Passwort. Der Vorteil liegt in der einfachen Einrichtung, allerdings ist diese Methode anfälliger für Brute-Force-Angriffe als die Schlüssel-basierte Authentifizierung.
Public-Key-Authentifizierung
Bei dieser Methode generierst du ein Schlüsselpaar bestehend aus einem privaten und einem öffentlichen Schlüssel. Der öffentliche Schlüssel wird auf dem Server hinterlegt, der private Schlüssel verbleibt sicher auf deinem Client. Diese Methode gilt als sicherer, da kein Passwort über das Netzwerk übertragen wird.
# SSH-Schlüsselpaar generieren
ssh-keygen -t ed25519 -C "dein-kommentar"
# Öffentlichen Schlüssel auf Server kopieren
ssh-copy-id benutzer@server.example.com
# SFTP-Verbindung mit Schlüssel
sftp -i ~/.ssh/id_ed25519 benutzer@server.example.com
Multi-Faktor-Authentifizierung
Für erhöhte Sicherheitsanforderungen lässt sich SFTP mit Multi-Faktor-Authentifizierung (MFA) kombinieren. Dabei wird zusätzlich zum Passwort oder Schlüssel ein zweiter Faktor abgefragt, beispielsweise ein Einmalpasswort aus einer Authenticator-App.
Verschlüsselung und Sicherheit
SFTP verschlüsselt sowohl die Befehle als auch die übertragenen Daten. Das unterscheidet es grundlegend von klassischem FTP, bei dem Zugangsdaten und Dateiinhalte im Klartext übertragen werden. Die Verschlüsselung basiert auf dem SSH-Protokoll und nutzt moderne kryptografische Verfahren.
Die wichtigsten Sicherheitsmerkmale von SFTP sind:
- AES-Verschlüsselung: Der Advanced Encryption Standard (typischerweise AES-256) schützt alle übertragenen Daten
- SSH Message Authentication Code (MAC): Gewährleistet die Integrität der Datenpakete und erkennt Manipulationen
- Host-Key-Verifizierung: Der Client prüft beim ersten Verbindungsaufbau den Fingerabdruck des Servers und warnt bei Änderungen
- Perfect Forward Secrecy: Selbst wenn ein Schlüssel kompromittiert wird, bleiben frühere Sitzungen geschützt
SFTP vs. FTPS - der Unterschied
SFTP und FTPS werden oft verwechselt, sind aber grundlegend verschiedene Protokolle. FTPS (FTP Secure) ist eine Erweiterung des klassischen FTP-Protokolls um TLS/SSL-Verschlüsselung, während SFTP ein komplett eigenständiges Protokoll auf Basis von SSH ist.
| Aspekt | SFTP | FTPS |
|---|---|---|
| Basis-Protokoll | SSH | FTP + TLS/SSL |
| Ports | Nur Port 22 | Mehrere Ports (21, 20, dynamische) |
| Zertifikate | SSH-Schlüsselpaare | X.509-Zertifikate |
| Firewall | Einfach zu konfigurieren | Komplexer durch mehrere Ports |
| Implementierung | Einfacher | Aufwendiger |
| Verbreitung | Standard in Linux/Unix | Häufig in Windows-Umgebungen |
Für die meisten Anwendungsfälle ist SFTP die bessere Wahl, da es einfacher zu konfigurieren ist und nur einen Port benötigt. FTPS kann sinnvoll sein, wenn bereits eine FTP-Infrastruktur existiert oder spezielle Compliance-Anforderungen X.509-Zertifikate vorschreiben.
Praktische Anwendung
SFTP wird in vielen Szenarien eingesetzt, in denen Dateien sicher zwischen Systemen übertragen werden müssen. Typische Anwendungsfälle sind der Transfer von Backup-Dateien, der Austausch von Geschäftsdaten mit Partnern oder das Deployment von Webanwendungen auf Server.
Kommandozeilen-Beispiele
Die meisten Linux- und Unix-Systeme haben einen SFTP-Client vorinstalliert. Hier sind die wichtigsten Befehle für die tägliche Arbeit:
# Verbindung herstellen
sftp benutzer@server.example.com
# Datei herunterladen
sftp> get remote-datei.txt
# Datei hochladen
sftp> put lokale-datei.txt
# Verzeichnis wechseln (remote)
sftp> cd /var/www/html
# Verzeichnis wechseln (lokal)
sftp> lcd ~/Downloads
# Verzeichnisinhalt anzeigen
sftp> ls -la
# Verbindung beenden
sftp> exit
Grafische SFTP-Clients
Für die alltägliche Arbeit sind grafische Clients oft praktischer. Beliebte SFTP-Clients sind:
- FileZilla: Kostenlos und plattformübergreifend (Windows, macOS, Linux)
- WinSCP: Kostenlos für Windows mit vielen Zusatzfunktionen
- Cyberduck: Kostenlos für macOS und Windows
- Transmit: Kostenpflichtig für macOS, bekannt für gute Usability
SFTP in der IT-Praxis
Als Fachinformatiker für Systemintegration wirst du SFTP regelmäßig für die Serververwaltung und den sicheren Dateitransfer nutzen. Das Protokoll ist der De-facto-Standard für sichere Dateiübertragungen in Linux-Umgebungen und spielt auch in Windows-Server-Infrastrukturen eine zunehmende Rolle.
In der Anwendungsentwicklung begegnet dir SFTP beim automatisierten Deployment von Anwendungen, bei der Integration mit externen Systemen über Dateiübertragung oder beim Backup von Anwendungsdaten.