sftp (SSH File Transfer Protocol) ist ein interaktives Werkzeug zum Übertragen und Verwalten von Dateien über eine verschlüsselte SSH-Verbindung. Anders als beim Einzeiler scp startet sftp eine Shell, in der man mit Kommandos navigiert, hoch- und herunterlädt — ähnlich wie beim klassischen FTP, nur vollständig verschlüsselt über Port 22.

Verbindung herstellen

sftp Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.
sftp -P 2222 Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.
sftp -i ~/.ssh/id_ed25519 Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.

Wie bei scp ist der Port ein großes -P, die Identitätsdatei wird mit -i gewählt. Nach dem Login erscheint die Eingabeaufforderung sftp>.

Die wichtigsten interaktiven Kommandos

  • ls, cd, pwd — entferntes Verzeichnis ansehen und wechseln.
  • lls, lcd, lpwd — dieselben Aktionen im lokalen Verzeichnis (Präfix l).
  • get datei — Datei vom Server herunterladen; get -r ordner rekursiv, get -a datei hängt eine unterbrochene Übertragung an.
  • put datei — Datei hochladen; put -r ordner rekursiv.
  • rm datei, mkdir ordner, rmdir ordner, chmod 600 datei, rename alt neu — Dateien entfernt verwalten.
  • ! — eine lokale Shell starten, bye oder exit beendet sftp.

Batch-Modus für Skripte

sftp -b uebung.txt Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.

Mit -b datei liest sftp die Kommandos zeilenweise aus einer Batch-Datei statt interaktiv — praktisch für automatisierte Transfers. Bricht ein Kommando in der Batch-Datei mit einem Fehler ab, beendet sich sftp standardmäßig; das optionale -B puffer setzt nur die Puffergröße für die Übertragung und beeinflusst dieses Verhalten nicht. Für robuste Skripte sollte die Batch-Datei daher nur Kommandos enthalten, die mit Sicherheit gelingen, oder der Aufruf pro Datei erfolgen.

SFTP, FTPS und FTP

SFTP läuft als Subsystem über SSH (Port 22) und verschlüsselt alles. Davon zu unterscheiden sind das unverschlüsselte FTP und FTPS (FTP über TLS). Viele moderne scp-Aufrufe nutzen intern ohnehin das SFTP-Protokoll — siehe scp-Befehle.

Verwandte Grundlagen: ssh, scp und rsync im Überblick, rsync-Befehle, SSH-Schlüssel.