15%

15% auf alle Hosting-Dienste sparen

Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

Benutze den Code:

Skills
Anfangen
28.10.2024

Dateien über SSH kopieren: Vollständiger Leitfaden zu SCP, rsync und SFTP

SSH (Secure Shell) ist das Rückgrat der sicheren Remote-Serververwaltung. Ob Sie ein Entwickler sind, der Code bereitstellt, ein Sysadmin, der Infrastruktur verwaltet, oder ein Power-User, der eine VPS Hosting-Umgebung betreut – das sichere Übertragen von Dateien zwischen Maschinen ist eine Aufgabe, die Sie ständig durchführen werden.

Dieser umfassende Leitfaden behandelt alle wichtigen Methoden zum Kopieren von Dateien über SSH – einschließlich SCP, rsync, SFTP und schlüsselbasierter Automatisierung – mit praxisnaher Syntax, praktischen Beispielen und Expertentipps, die Ihnen helfen, schneller und sicherer zu arbeiten.

Warum SSH für Dateiübertragungen verwenden?

Bevor wir uns mit den Tools befassen, lohnt es sich zu verstehen, warum SSH-basierte Dateiübertragung der Industriestandard für Serveradministratoren und Entwickler gleichermaßen ist.

  • Ende-zu-Ende-Verschlüsselung: Jedes Datenbyte – einschließlich Anmeldedaten, Befehle und Dateiinhalte – wird während der Übertragung mit modernen kryptografischen Algorithmen verschlüsselt. Dies macht SSH-Übertragungen immun gegen Paket-Sniffing und Man-in-the-Middle-Angriffe.
  • Keine zusätzliche Software erforderlich: SSH ist auf praktisch jedem Linux/Unix-System vorinstalliert und nativ unter Windows 10+ und macOS verfügbar.
  • Vielseitigkeit: Eine einzige SSH-Verbindung kann interaktive Shell-Sitzungen, Dateiübertragungen, Port-Weiterleitung und automatisiertes Scripting verwalten.
  • Automatisierungsfreundlich: SSH lässt sich nahtlos in Cron-Jobs, CI/CD-Pipelines und Backup-Skripte integrieren und ermöglicht vollständig automatisierte, passwortlose Dateiübertragungen.
  • Zuverlässigkeit: SSH-Verbindungen gehen mit Netzwerkunterbrechungen elegant um, besonders in Kombination mit Tools wie rsync.

Methode 1: Dateien mit SCP (Secure Copy Protocol) kopieren

SCP ist das einfachste und am weitesten verbreitete Tool für einmalige Dateiübertragungen über SSH. Es nutzt Ihre bestehende SSH-Verbindung, um Dateien sicher zwischen Hosts zu kopieren.

Grundlegende SCP-Syntax

scp [options] [source] [destination]

Beispiel 1: Eine Datei vom lokalen Rechner auf den Remote-Server hochladen

scp /path/to/local/file username@remote_host:/path/to/remote/destination

Erläuterung:

    /path/to/local/file — die Datei, die Sie auf Ihrem lokalen Rechner übertragen möchten
    username@remote_host — Ihr SSH-Benutzername und der Hostname oder die IP-Adresse des Servers
    /path/to/remote/destination — das Zielverzeichnis oder der Dateipfad auf dem Remote-Server
    
    Beispiel 2: Eine Datei vom Remote-Server auf den lokalen Rechner herunterladen
    scp username@remote_host:/path/to/remote/file /path/to/local/destination
    Vertauschen Sie einfach Quelle und Ziel, um eine Datei vom Server auf Ihren lokalen Rechner zu übertragen.
    Beispiel 3: Ein gesamtes Verzeichnis rekursiv kopieren
    scp -r /path/to/local/directory username@remote_host:/path/to/remote/destination
    Das Flag -r weist SCP an, das Verzeichnis und alle seine Inhalte rekursiv zu kopieren, einschließlich verschachtelter Unterverzeichnisse.
    Nützliche SCP-Optionen
    
    
    
    
    Option
    Beschreibung
    
    
    
    
    -P [port]
    Einen benutzerdefinierten SSH-Port angeben (Hinweis: Großbuchstabe -P, im Gegensatz zu SSH’s Kleinbuchstabe -p)
    
    
    -C
    Komprimierung für schnellere Übertragungen über langsame Verbindungen aktivieren
    
    
    -i [identity_file]
    Einen bestimmten privaten SSH-Schlüssel zur Authentifizierung verwenden
    
    
    -l [limit]
    Bandbreitennutzung in Kbit/s begrenzen
    
    
    -q
    Stiller Modus — Fortschrittsausgabe unterdrücken
    
    
    -v
    Ausführlicher Modus — nützlich zur Fehlersuche bei Verbindungsproblemen
    
    
    
    
    Wann SCP verwenden
    SCP ist ideal für schnelle, einmalige Dateiübertragungen, bei denen Einfachheit wichtig ist. Es erfordert keine Konfiguration und funktioniert sofort auf jedem System mit installiertem SSH. Für große Verzeichnisse oder wiederholte Übertragungen ist rsync jedoch eine deutlich bessere Wahl.
    Methode 2: Dateien mit rsync kopieren
    rsync ist die Wahl der Profis für Dateisynchronisierung und -übertragung über SSH. Sein herausragendes Merkmal ist die Delta-Übertragung: Anstatt ganze Dateien zu kopieren, analysiert rsync Quelle und Ziel und überträgt nur die geänderten Teile. Dies spart enorme Mengen an Zeit und Bandbreite beim Umgang mit großen Dateien oder Verzeichnissen, die häufig aktualisiert werden.
    Grundlegende rsync-Syntax
    rsync [options] [source] [destination]
    Beispiel 1: Eine Datei vom lokalen Rechner auf den Remote-Server hochladen
    rsync -avz /path/to/local/file username@remote_host:/path/to/remote/destination
    Beispiel 2: Ein gesamtes Verzeichnis mit einem Remote-Server synchronisieren
    rsync -avz /path/to/local/directory/ username@remote_host:/path/to/remote/destination/
    > Wichtig: Beachten Sie den abschließenden Schrägstrich / nach dem Quellverzeichnis. Mit einem abschließenden Schrägstrich kopiert rsync den *Inhalt* des Verzeichnisses. Ohne ihn kopiert rsync das Verzeichnis selbst als Unterverzeichnis des Ziels.
    Beispiel 3: Ein Verzeichnis spiegeln (im Quellverzeichnis gelöschte Dateien entfernen)
    rsync -avz --delete /path/to/local/directory/ username@remote_host:/path/to/remote/destination/
    Das Flag --delete stellt sicher, dass Dateien, die aus der Quelle gelöscht wurden, auch am Ziel entfernt werden, sodass beide Speicherorte perfekt synchronisiert bleiben.
    Beispiel 4: Einen benutzerdefinierten SSH-Port verwenden
    rsync -avz -e "ssh -p 2222" /path/to/local/directory/ username@remote_host:/path/to/remote/destination/
    Nützliche rsync-Optionen
    
    
    
    
    Option
    Beschreibung
    
    
    
    
    -a
    Archivmodus: bewahrt Berechtigungen, Zeitstempel, symbolische Links und Eigentümerschaft
    
    
    -v
    Ausführlich: zeigt den Fortschritt Datei für Datei während der Übertragung an
    
    
    -z
    Komprimierung: reduziert die über das Netzwerk übertragenen Daten
    
    
    --delete
    Löscht Dateien am Ziel, die an der Quelle nicht mehr vorhanden sind
    
    
    --progress
    Zeigt den Echtzeit-Fortschritt für jede Datei an
    
    
    --exclude
    Bestimmte Dateien oder Muster ausschließen (z. B. --exclude '*.log')
    
    
    -n oder --dry-run
    Übertragung simulieren, ohne tatsächlich etwas zu kopieren
    
    
    -e "ssh -p [port]"
    Einen benutzerdefinierten SSH-Port angeben
    
    
    --bwlimit=[KB/s]
    Übertragungsgeschwindigkeit drosseln, um die Verbindung nicht zu überlasten
    
    
    
    
    Wann rsync verwenden
    Verwenden Sie rsync für Backups, Deployments und alle wiederkehrenden Synchronisierungsaufgaben. Es ist besonders leistungsstark bei der Verwaltung großer Codebasen, Medienbibliotheken oder Datenbankexporte auf einem Dedicated Server, wo Bandbreiteneffizienz und Datenintegrität entscheidend sind.
    Methode 3: Dateien zwischen zwei Remote-Servern kopieren
    Eine weniger bekannte, aber äußerst nützliche Fähigkeit von SCP und rsync ist die Möglichkeit, Dateien direkt zwischen zwei Remote-Servern zu übertragen – ohne die Daten über Ihren lokalen Rechner zu leiten. Dies ist unschätzbar wertvoll bei der Servermigration oder der Datensynchronisierung zwischen Cloud-Instanzen.
    Dateien zwischen zwei Remote-Servern mit SCP kopieren
    scp username1@remote_host1:/path/to/file username2@remote_host2:/path/to/destination
    Dateien zwischen zwei Remote-Servern mit rsync kopieren
    rsync -avz username1@remote_host1:/path/to/source/ username2@remote_host2:/path/to/destination/
    > Hinweis: Damit Server-zu-Server-Übertragungen funktionieren, muss der Quellserver in der Lage sein, eine SSH-Verbindung zum Zielserver herzustellen. Möglicherweise müssen Sie SSH-Schlüssel auf dem Quellserver konfigurieren oder SSH-Agent-Weiterleitung verwenden (ssh -A).
    Server-zu-Server-Übertragung über SSH-Tunneling (alternative Methode)
    Wenn eine direkte Server-zu-Server-SSH-Verbindung aufgrund von Firewall-Einschränkungen nicht möglich ist, können Sie die Übertragung über Ihren lokalen Rechner mit tar und ssh weiterleiten:
    ssh username1@remote_host1 "tar czf - /path/to/source" | ssh username2@remote_host2 "tar xzf - -C /path/to/destination"
    Dies streamt ein komprimiertes Archiv von Server 1 direkt in Server 2 über Ihre lokale Terminalsitzung.
    Methode 4: Dateien mit SFTP (SSH File Transfer Protocol) kopieren
    SFTP bietet eine interaktive, FTP-ähnliche Erfahrung über eine verschlüsselte SSH-Verbindung. Im Gegensatz zu SCP, das ein Einzelbefehl-Tool ist, öffnet SFTP eine persistente Sitzung, in der Sie Verzeichnisse durchsuchen, Dateien hochladen, herunterladen, umbenennen und interaktiv löschen können.
    Eine SFTP-Sitzung starten
    sftp username@remote_host
    Sie gelangen in eine SFTP-Eingabeaufforderung (sftp>), von der aus Sie die folgenden Befehle ausführen können:
    Wichtige SFTP-Befehle
    
    
    
    
    Befehl
    Beschreibung
    
    
    
    
    ls
    Dateien im aktuellen Remote-Verzeichnis auflisten
    
    
    lls
    Dateien im aktuellen lokalen Verzeichnis auflisten
    
    
    cd /remote/path
    Das Remote-Verzeichnis wechseln
    
    
    lcd /local/path
    Das lokale Verzeichnis wechseln
    
    
    put /local/file /remote/destination
    Eine Datei auf den Remote-Server hochladen
    
    
    get /remote/file /local/destination
    Eine Datei vom Remote-Server herunterladen
    
    
    mput *.txt
    Mehrere Dateien hochladen, die einem Muster entsprechen
    
    
    mget *.log
    Mehrere Dateien herunterladen, die einem Muster entsprechen
    
    
    mkdir /remote/newdir
    Ein Verzeichnis auf dem Remote-Server erstellen
    
    
    rm /remote/file
    Eine Datei auf dem Remote-Server löschen
    
    
    exit oder quit
    Die SFTP-Sitzung beenden
    
    
    
    
    Verbindung zu einem benutzerdefinierten SSH-Port über SFTP
    sftp -P 2222 username@remote_host
    Wann SFTP verwenden
    SFTP eignet sich am besten für interaktive Dateiverwaltungssitzungen – zum Beispiel, wenn Sie eine Remote-Verzeichnisstruktur durchsuchen, selektiv Log-Dateien herunterladen oder Konfigurationsdateien auf einen Webserver hochladen müssen. Viele GUI-Clients (wie FileZilla, Cyberduck und WinSCP) verwenden SFTP als zugrunde liegendes Protokoll, was es auch für nicht-technische Benutzer zugänglich macht.
    Methode 5: Dateiübertragungen mit SSH-Schlüsselauthentifizierung automatisieren
    Das manuelle Eingeben eines Passworts für jede Dateiübertragung ist ineffizient und mit Automatisierung nicht kompatibel. Die SSH-Schlüsselauthentifizierung löst dieses Problem, indem sie passwortlose, kryptografisch sichere Anmeldungen ermöglicht – eine Voraussetzung für jeden automatisierten Backup- oder Deployment-Workflow.
    Schritt 1: Ein SSH-Schlüsselpaar generieren
    Führen Sie auf Ihrem lokalen Rechner aus:
    ssh-keygen -t ed25519 -C "your_email@example.com"
    > Hinweis: ed25519 ist der moderne, empfohlene Algorithmus. Verwenden Sie -t rsa -b 4096, wenn Sie Kompatibilität mit älteren Systemen benötigen.
    Folgen Sie den Aufforderungen, um den Schlüssel zu speichern (Standardspeicherort: ~/.ssh/id_ed25519) und optional eine Passphrase für zusätzliche Sicherheit festzulegen.
    Schritt 2: Ihren öffentlichen Schlüssel auf den Remote-Server kopieren
    ssh-copy-id username@remote_host
    Dies fügt Ihren öffentlichen Schlüssel zur Datei ~/.ssh/authorized_keys auf dem Remote-Server hinzu. Sie werden ein letztes Mal nach Ihrem Passwort gefragt.
    Wenn ssh-copy-id nicht verfügbar ist, können Sie dies manuell tun:
    cat ~/.ssh/id_ed25519.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
    Schritt 3: Passwortlose Authentifizierung testen
    ssh username@remote_host
    Wenn Sie sich verbinden, ohne nach einem Passwort gefragt zu werden, funktioniert die schlüsselbasierte Authentifizierung korrekt.
    Schritt 4: Übertragungen mit einem Shell-Skript automatisieren
    Mit konfiguriertem passwortlosem SSH können Sie nun Dateiübertragungen in Cron-Jobs oder Skripten automatisieren:
    #!/bin/bash
    # Daily backup script
    rsync -avz --delete /var/www/html/ username@backup_server:/backups/www/
    Fügen Sie dies zu Ihrer Crontab (crontab -e) hinzu, um es nächtlich auszuführen:
    0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
    Fehlerbehebung bei häufigen SSH-Dateiübertragungsproblemen
    Selbst erfahrene Administratoren stoßen auf Probleme. Hier sind die häufigsten Probleme und ihre Lösungen:
    Zugriff verweigert (publickey)
    
    Überprüfen Sie, ob der öffentliche Schlüssel korrekt zu ~/.ssh/authorized_keys auf dem Remote-Server hinzugefügt wurde
    Prüfen Sie, ob ~/.ssh die Berechtigungen 700 und authorized_keys die Berechtigungen 600 hat
    Bestätigen Sie, dass der SSH-Daemon die Schlüsselauthentifizierung erlaubt (PubkeyAuthentication yes in /etc/ssh/sshd_config)
    
    Verbindung abgelehnt
    
    Überprüfen Sie, ob der SSH-Dienst läuft: systemctl status sshd
  • Prüfen Sie, ob der richtige Port verwendet wird
  • Überprüfen Sie die Firewall-Regeln: ufw status oder iptables -L
  • Übertragungsgeschwindigkeit ist langsam

    • Komprimierung aktivieren: -C zu SCP oder -z zu rsync hinzufügen
    • Eine schnellere Verschlüsselung verwenden: ssh -c aes128-ctr (weniger sicher, aber schneller bei Verbindungen mit hoher Latenz)
    • Für große Übertragungen rsync mit --bwlimit in Betracht ziehen, um das Netzwerk nicht zu überlasten

    Host-Schlüsselverifizierung fehlgeschlagen

    • Der SSH-Fingerabdruck des Remote-Servers hat sich geändert (könnte auf ein Sicherheitsproblem oder einen Server-Neuaufbau hinweisen)
    • Den alten Schlüssel entfernen: ssh-keygen -R remote_host
    • Erneut verbinden und den neuen Fingerabdruck vor der Akzeptierung überprüfen

    Das richtige Tool wählen: SCP vs. rsync vs. SFTP

    FunktionSCPrsyncSFTP
    Benutzerfreundlichkeit⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
    Delta-Übertragungen
    Verzeichnissynchronisierung✅ (rekursiv)✅ (mit --delete)✅ (manuell)
    Interaktiver Modus
    Automatisierung✅ (mit Skripten)
    BandbreiteneffizienzNiedrigHochNiedrig
    Am besten geeignet fürSchnelle einmalige ÜbertragungenBackups & SynchronisierungInteraktives Durchsuchen

    Ihre SSH-Dateiübertragungen absichern: Best Practices

    Unabhängig davon, welches Tool Sie verwenden, befolgen Sie diese Sicherheits-Best-Practices, um Ihre Server und Daten zu schützen:

    1. Passwortauthentifizierung deaktivieren — Verwenden Sie ausschließlich SSH-Schlüssel und setzen Sie PasswordAuthentication no in /etc/ssh/sshd_config
    2. Den Standard-SSH-Port ändern — Das Verlassen von Port 22 reduziert automatisierte Brute-Force-Versuche erheblich
    3. fail2ban verwenden — IPs, die wiederholt bei der Authentifizierung scheitern, automatisch sperren
    4. SSH-Zugriff nach IP einschränken — Firewall-Regeln oder AllowUsers-Direktiven verwenden, um zu begrenzen, wer sich verbinden kann
    5. SSH aktuell halten — OpenSSH regelmäßig aktualisieren, um bekannte Schwachstellen zu beheben
    6. Starke Schlüsselalgorithmen verwendened25519 oder rsa-4096 gegenüber älteren, schwächeren Algorithmen bevorzugen
    7. Ihre Webanwendungen absichern — SSH-Sicherheit mit einem SSL-Zertifikat kombinieren, um den gesamten Datenverkehr zu Ihren Webdiensten zu verschlüsseln

    Häufig gestellte Fragen

    Was ist der Unterschied zwischen SCP und SFTP?

    SCP ist ein nicht-interaktives Befehlszeilen-Tool, das für schnelle Einzelbefehl-Dateiübertragungen konzipiert ist. SFTP ist ein interaktives Protokoll, das es Ihnen ermöglicht, Dateien in einer sitzungsbasierten Oberfläche zu durchsuchen, zu verwalten, hochzuladen und herunterzuladen. Beide verwenden SSH zur Verschlüsselung.

    Kann ich rsync ohne SSH verwenden?

    Ja — rsync hat einen eigenen Daemon-Modus, der ohne SSH funktioniert, aber weniger sicher ist. Für jede internetbasierte Übertragung sollten Sie immer rsync über SSH verwenden (rsync -e ssh).

    Wie übertrage ich Dateien, wenn mein Server einen nicht standardmäßigen SSH-Port verwendet?

    Verwenden Sie das Flag -P mit SCP (scp -P 2222) oder die Option -e "ssh -p 2222" mit rsync. Für SFTP verwenden Sie sftp -P 2222.

    Ist SCP veraltet?

    OpenSSH-Entwickler haben darauf hingewiesen, dass das zugrunde liegende Protokoll von SCP Einschränkungen hat, und empfehlen die Verwendung von SFTP oder rsync für neue Workflows. SCP bleibt jedoch auf praktisch allen Systemen weit verbreitet und funktionsfähig.

    Fazit

    Die Beherrschung SSH-basierter Dateiübertragung ist eine wesentliche Fähigkeit für jeden, der Server verwaltet, Anwendungen bereitstellt oder Remote-Infrastruktur betreut. Jedes Tool hat seinen Platz:

    • SCP ist Ihre erste Wahl für schnelle, einfache, einmalige Übertragungen
    • rsync ist unverzichtbar für Backups, Deployments und effiziente Synchronisierung großer Datensätze
    • SFTP glänzt in interaktiven Sitzungen, in denen Sie Dateien spontan durchsuchen und verwalten müssen

    Die Kombination dieser Tools mit SSH-Schlüsselauthentifizierung und soliden Sicherheitspraktiken gibt Ihnen einen robusten, automatisierten und sicheren Dateiübertragungsworkflow, der von einem einzelnen Shared Web Hosting-Konto bis hin zu komplexen Multi-Server-Architekturen auf Dedicated Servers skaliert.

    Wenn Sie nach einer zuverlässigen, leistungsstarken Hosting-Umgebung suchen, um diese Fähigkeiten in die Praxis umzusetzen, erkunden Sie AlexHost’s VPS Hosting-Pläne — entwickelt für Entwickler und Sysadmins, die vollen Root-Zugriff, SSD-Speicher und Netzwerkkonnektivität auf Enterprise-Niveau fordern.

    15%

    15% auf alle Hosting-Dienste sparen

    Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

    Benutze den Code:

    Skills
    Anfangen