Der Befehl sftp überträgt Dateien zwischen Rechnern über eine verschlüsselte SSH-Verbindung. Anders als das veraltete FTP-Protokoll läuft die gesamte Kommunikation durch einen sicheren Tunnel.

Syntax

sftp [OPTIONEN] [benutzer@]host[:pfad]
  • benutzer – Der Benutzername auf dem Remote-Server.
  • host – Hostname oder IP-Adresse des Zielservers.
  • pfad – Optionaler Pfad zum direkten Wechseln nach Verbindungsaufbau.

Wichtige Optionen

OptionBeschreibung
-P portVerbindung über einen alternativen Port (Standard: 22)
-i dateiPrivaten SSH-Schlüssel für die Authentifizierung angeben
-o optionSSH-Konfigurationsoptionen direkt übergeben
-b batchfileBefehle aus einer Datei ausführen (nicht-interaktiv)
-rVerzeichnisse rekursiv übertragen

Verbindung herstellen

Für eine einfache Verbindung gibst du Benutzername und Host an:

sftp admin@192.168.1.50

Nach erfolgreicher Authentifizierung landest du in der interaktiven SFTP-Shell:

Connected to 192.168.1.50.
sftp>

Falls der SSH-Server auf einem anderen Port läuft:

sftp -P 2222 admin@server.example.com

Mit SSH-Schlüssel statt Passwort:

sftp -i ~/.ssh/deploy_key deploy@webserver.de

Die SFTP-Shell kennt viele Befehle, die du von der normalen Shell her kennst. Sie beziehen sich auf das entfernte System:

BefehlFunktion
pwdAktuelles Verzeichnis auf dem Server anzeigen
lsDateien und Verzeichnisse auflisten
cd verzeichnisIn ein Verzeichnis wechseln
mkdir verzeichnisNeues Verzeichnis erstellen

Für lokale Operationen stellst du den Befehlen ein l voran:

BefehlFunktion
lpwdLokales Arbeitsverzeichnis anzeigen
llsLokale Dateien auflisten
lcd verzeichnisLokales Verzeichnis wechseln

Dateien herunterladen

Mit get holst du Dateien vom Server auf deinen Rechner:

sftp> get backup.tar.gz

Die Datei landet im Verzeichnis, aus dem du sftp gestartet hast. Für einen anderen lokalen Namen:

sftp> get backup.tar.gz /home/user/downloads/backup-2025-01.tar.gz

Ganze Verzeichnisse lädst du mit der Option -r herunter:

sftp> get -r /var/www/html ./website-backup

Falls eine Übertragung abbricht, setzt du sie mit reget fort:

sftp> reget grosses-archiv.zip

Dateien hochladen

Der Befehl put funktioniert in die andere Richtung – vom lokalen System zum Server:

sftp> put deploy.zip

Mit anderem Zielnamen auf dem Server:

sftp> put config.yml /etc/app/production.yml

Verzeichnisse hochladen:

sftp> put -r ./projekt /var/www/projekt

Unterbrochene Uploads fortsetzt du mit reput:

sftp> reput video.mp4

Dateiverwaltung auf dem Server

SFTP erlaubt grundlegende Dateioperationen, ohne dass du eine separate SSH-Sitzung brauchst:

sftp> rename config.yml config.yml.bak
sftp> rm alte-datei.log
sftp> rmdir leeres-verzeichnis
sftp> chmod 644 index.html
sftp> chown 1000 index.html
sftp> chgrp 1000 index.html

Bei chown und chgrp musst du die numerische Benutzer- bzw. Gruppen-ID angeben, nicht den Namen.

Speicherplatz prüfen

Der Befehl df zeigt den verfügbaren Speicherplatz auf dem Remote-System:

sftp> df -h
    Size     Used    Avail   (root)    %Capacity
  19.7GB    1.5GB   17.2GB   18.2GB           7%

Batch-Modus für Skripte

Mit der Option -b führst du SFTP-Befehle aus einer Datei aus. Das eignet sich für automatisierte Übertragungen:

sftp -b commands.txt user@server

Inhalt von commands.txt:

cd /var/backups
put daily-backup.tar.gz
quit

Verbindung beenden

Zum Beenden der SFTP-Sitzung:

sftp> quit

Alternativ funktionieren auch exit oder bye.

SFTP vs. SCP

Beide nutzen SSH zur Verschlüsselung, unterscheiden sich aber im Funktionsumfang:

Merkmalsftpscp
Interaktive ShellJaNein
Übertragung fortsetzenJa (reget, reput)Nein
Dateien umbenennen/löschenJaNein
Verzeichnisse durchsuchenJaNein

Für einzelne, schnelle Übertragungen reicht scp. Sobald du mehrere Dateien verwalten oder Transfers fortsetzen willst, ist sftp die bessere Wahl.

Zusammenfassung

Der Befehl sftp kombiniert sichere Dateiübertragung mit einer interaktiven Shell zur Dateiverwaltung. Mit get und put überträgst du Dateien, mit reget und reput setzt du abgebrochene Transfers fort. Die wichtigsten Punkte:

  • Verbindung mit sftp benutzer@host
  • Herunterladen mit get, Hochladen mit put
  • Option -r für rekursive Verzeichnisübertragung
  • Option -P für alternative Ports
  • Lokale Befehle beginnen mit l (z.B. lpwd, lcd)

Verwandte Artikel