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
| Option | Beschreibung |
|---|---|
-P port | Verbindung über einen alternativen Port (Standard: 22) |
-i datei | Privaten SSH-Schlüssel für die Authentifizierung angeben |
-o option | SSH-Konfigurationsoptionen direkt übergeben |
-b batchfile | Befehle aus einer Datei ausführen (nicht-interaktiv) |
-r | Verzeichnisse 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
Navigation auf dem Remote-Server
Die SFTP-Shell kennt viele Befehle, die du von der normalen Shell her kennst. Sie beziehen sich auf das entfernte System:
| Befehl | Funktion |
|---|---|
pwd | Aktuelles Verzeichnis auf dem Server anzeigen |
ls | Dateien und Verzeichnisse auflisten |
cd verzeichnis | In ein Verzeichnis wechseln |
mkdir verzeichnis | Neues Verzeichnis erstellen |
Für lokale Operationen stellst du den Befehlen ein l voran:
| Befehl | Funktion |
|---|---|
lpwd | Lokales Arbeitsverzeichnis anzeigen |
lls | Lokale Dateien auflisten |
lcd verzeichnis | Lokales 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:
| Merkmal | sftp | scp |
|---|---|---|
| Interaktive Shell | Ja | Nein |
| Übertragung fortsetzen | Ja (reget, reput) | Nein |
| Dateien umbenennen/löschen | Ja | Nein |
| Verzeichnisse durchsuchen | Ja | Nein |
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 mitput - Option
-rfür rekursive Verzeichnisübertragung - Option
-Pfür alternative Ports - Lokale Befehle beginnen mit
l(z.B.lpwd,lcd)