Mit sftp benutzer@server startest du eine Sitzung; darin arbeitest du mit ls, cd, put, get, mkdir, rm und chmod. Lokale Gegenstücke beginnen mit l (lls, lcd, lpwd). Für einzelne Dateien ohne Sitzung eignet sich scp, für wiederholte Synchronisation rsync. Fertige Befehle für deinen Fall erzeugt der SFTP-Befehlsgenerator.
Sitzung starten und beenden
sftp [email protected] # Standardport 22
sftp -P 2222 [email protected] # anderer Port (großes P!)
sftp -i ~/.ssh/id_ed25519 [email protected] # mit Schlüsseldatei
bye # Sitzung beenden (auch: exit, quit)
Beim ersten Verbinden fragt der Client, ob du dem Hostschlüssel vertraust; mit yes bestätigen. Hintergrund: Was ist SFTP?
Navigieren
| Befehl | Wirkung | Lokales Gegenstück |
|---|---|---|
pwd |
Aktuelles Verzeichnis auf dem Server anzeigen | lpwd |
ls, ls -la |
Serverinhalt auflisten (-la: mit versteckten Dateien und Rechten) |
lls |
cd ordner |
Verzeichnis wechseln (cd .. eine Ebene hoch) |
lcd ordner |
mkdir neu |
Ordner anlegen | lmkdir neu |
Übertragen
put datei.zip # hochladen ins aktuelle Serververzeichnis
put datei.zip /public_html/ # hochladen mit Zielpfad
put -r ordner # Ordner rekursiv hochladen
get backup.sql # herunterladen ins aktuelle lokale Verzeichnis
get -r uploads # Ordner rekursiv herunterladen
reput datei.zip # abgebrochenen Upload fortsetzen
reget backup.sql # abgebrochenen Download fortsetzen
mget *.jpg # mehrere Dateien (Platzhalter)
Platzhalter wie *.jpg funktionieren bei get, put und ls. Große Übertragungen vorab abschätzen: Transferzeit-Rechner.
Dateien verwalten
rename alt.html neu.html # umbenennen oder verschieben
rm datei.tmp # Datei löschen
rmdir leerer-ordner # leeren Ordner löschen
chmod 644 index.html # Rechte setzen (Dateien 644, Ordner 755)
chmod 755 bilder
chown 1001 datei # Besitzer per UID (meist nicht erlaubt)
df -h # freier Speicher (nicht jeder Server)
!ls -la # lokalen Shell-Befehl ausführen (Ausrufezeichen)
Rechtezahlen entschlüsselt der chmod-Rechner; was bei Permission denied zu tun ist, steht unter Fehler 550.
Batch-Modus: Befehle aus Datei
cat > upload.sftp <<'EOF'
cd /public_html
put -r dist
chmod 644 index.html
bye
EOF
sftp -b upload.sftp [email protected]
Mit -b arbeitet sftp die Datei ab und bricht beim ersten Fehler ab. Für Cronjobs ist ein SSH-Schlüssel Pflicht, damit kein Passwort abgefragt wird: SSH-Key einrichten (die Schlüssel sind dieselben wie für FileZilla).
scp und rsync: die Alternativen
| Werkzeug | Wofür | Beispiel |
|---|---|---|
sftp |
Interaktiv stöbern, einzelne Dateien, Rechte ändern | sftp [email protected] |
scp |
Eine Datei oder einen Ordner einmalig kopieren, ohne Sitzung | scp -r dist [email protected]:/public_html/ |
rsync |
Ordner synchron halten, nur Änderungen übertragen, Deployments | rsync -avz --delete dist/ [email protected]:/public_html/ |
Unter Windows sind sftp und scp seit Windows 10 vorinstalliert (PowerShell), rsync nur über WSL. Alle drei Varianten mit deinen Pfaden erzeugt der Befehlsgenerator.
Wann FileZilla statt Kommandozeile?
Wenn du viele Ordner durchsuchst, Dateien per Drag & Drop verschiebst, Rechte in Dialogen setzt oder mehrere Server parallel offen hast, ist die grafische Oberfläche schneller. Die Kommandozeile gewinnt bei Automatisierung, Skripten und auf Servern ohne Desktop. Beide nutzen dieselben Zugangsdaten und Schlüssel; so richtest du FileZilla ein.
Häufige Fragen
Frage antippen, um die Antwort zu öffnen.
Warum heißt der Port-Parameter bei sftp -P, bei ssh aber -p?
Historisch gewachsen: scp und sftp nutzen das große -P, weil das kleine -p dort „Zeitstempel erhalten“ bedeutet. ssh und rsync -e "ssh -p" nutzen das kleine.
Kann ich Passwörter im Befehl übergeben?
Das OpenSSH-sftp bewusst nicht. Für Skripte Schlüssel nutzen; sshpass ist eine Notlösung, die das Passwort in der Prozessliste sichtbar macht.
Funktionieren die Befehle auch bei FTP?
Nein, sftp spricht nur SSH. Für FTP/FTPS auf der Kommandozeile eignen sich lftp oder curl; für gelegentliche Nutzung ist FileZilla einfacher.