scp — Dateien sicher über SSH kopieren

Praxis-Guide zu scp und sftp — Dateien sicher per SSH zwischen lokalem Rechner und Remote-Host übertragen, mit rekursiven Transfers und Schlüssel-Auth.

scp kopiert Dateien zwischen lokalem Rechner und Remote-Host direkt über eine SSH-Verbindung – kein separates Protokoll, keine zusätzliche Software nötig. Du gibst Quelle und Ziel in vertrauter cp-Syntax an; die Verschlüsselung übernimmt SSH im Hintergrund. Für größere Datenmengen oder inkrementelle Transfers lohnt sich ein Blick auf rsync; für interaktives Browsen auf dem Server bringt sftp eine FTP-ähnliche Sitzung.

scp — Auf den Remote-Host kopieren

scp <file> <user>@<host>:<path> — Kopiert eine lokale Datei auf einen Remote-Host.

scp config.yaml admin@server:/etc/app/

scp -r <dir> <user>@<host>:<path> — Kopiert ein Verzeichnis rekursiv auf den Remote-Host.

scp -r ./dist/ deploy@server:/var/www/html/

scp -P <port> <file> <user>@<host>:<path> — Kopiert über einen benutzerdefinierten SSH-Port.

scp -P 2222 backup.tar.gz admin@server:/backups/

scp -i <key> <file> <user>@<host>:<path> — Kopiert mit einem bestimmten SSH-Schlüssel.

scp -i ~/.ssh/deploy_key app.tar.gz deploy@server:/opt/

scp — Vom Remote-Host kopieren

scp <user>@<host>:<path> <local> — Kopiert eine Datei vom Remote-Host auf den lokalen Rechner.

scp admin@server:/var/log/app.log ./logs/

scp -r <user>@<host>:<path> <local> — Kopiert ein Verzeichnis rekursiv vom Remote-Host.

scp -r admin@server:/etc/nginx/ ./nginx-backup/

scp <user>@<host1>:<path> <user>@<host2>:<path> — Kopiert direkt zwischen zwei Remote-Hosts.

scp admin@server1:/data/dump.sql admin@server2:/data/

scp — Optionen

scp -C <file> <user>@<host>:<path> — Aktiviert Komprimierung während der Übertragung.

scp -C largefile.sql admin@server:/tmp/

scp -l <kbit/s> <file> <user>@<host>:<path> — Begrenzt die Bandbreite (in Kbit/s).

scp -l 5000 backup.tar.gz admin@server:/backups/

scp -p <file> <user>@<host>:<path> — Behält Zeitstempel und Berechtigungen der Datei bei.

scp -p important.conf admin@server:/etc/app/

scp -q <file> <user>@<host>:<path> — Stiller Modus: unterdrückt die Fortschrittsanzeige.

scp -q script.sh admin@server:/usr/local/bin/

sftp — Interaktive Sitzung

sftp <user>@<host> — Startet eine interaktive SFTP-Sitzung.

sftp admin@server

get <remote-file> — Lädt eine Datei herunter (innerhalb der sftp-Sitzung).

sftp> get /var/log/app.log

put <local-file> — Lädt eine Datei hoch (innerhalb der sftp-Sitzung).

sftp> put config.yaml /etc/app/

mget <pattern> — Lädt mehrere Dateien herunter, die einem Muster entsprechen.

sftp> mget *.log

mput <pattern> — Lädt mehrere Dateien hoch, die einem Muster entsprechen.

sftp> mput *.conf

ls — Listet den Inhalt des Remote-Verzeichnisses auf.

sftp> ls -la

lls — Listet den Inhalt des lokalen Verzeichnisses auf.

sftp> lls

sftp — Batch-Modus

sftp -b <batchfile> <user>@<host> — Führt SFTP-Befehle aus einer Batch-Datei aus.

sftp -b commands.txt admin@server

sftp -P <port> <user>@<host> — Verbindet über einen benutzerdefinierten SSH-Port.

sftp -P 2222 admin@server

sftp -i <key> <user>@<host> — Verbindet mit einem bestimmten SSH-Schlüssel.

sftp -i ~/.ssh/deploy_key deploy@server

Fazit

scp erledigt schnelle Einzel-Transfers zuverlässig und ohne Konfigurationsaufwand – solange SSH erreichbar ist, hast du ein sicheres Kopierwerkzeug zur Hand. Für wiederkehrende oder bandbreitenoptimierte Übertragungen ist rsync die bessere Wahl; für interaktive Sitzungen greifst du auf sftp zurück. Mit einem passenden SSH-Schlüssel entfällt die Passworteingabe komplett.

Verwandte Kommandos

  • ssh – Remote-Verbindung per SSH – die Basis, auf der scp aufbaut
  • ssh-keygen – SSH-Schlüsselpaar erstellen für passwortlose scp-Transfers
  • mosh – robuste SSH-Alternative für instabile Verbindungen