SFTP-Befehle im Überblick: Verbinden, hochladen, herunterladen, Rechte setzen

Die wichtigsten Befehle für die SFTP-Kommandozeile unter Linux, macOS und Windows – mit Beispielen, Unterschieden zu scp und rsync und Hinweisen, wann FileZilla die bessere Wahl ist.

Kurzfassung

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.