So verwenden Sie den scp-Befehl zum sicheren Übertragen von Dateien unter Linux

Sichere Dateiübertragung mit dem scp-Befehl unter Linux

Stellen Sie sich vor, Sie möchten Daten zwischen Servern auf einem Linux-System austauschen. Es gibt viele Ansätze, um dies zu erreichen, aber wenn Sicherheit Priorität hat, bleiben nur wenige Optionen. Die einfachste Lösung ist die Verwendung von scp, kurz für Secure Copy. Damit können Sie Dateien übertragen, ohne sich um Sicherheitsbedenken sorgen zu müssen. Dieser Artikel erklärt, wie Sie den scp-Befehl auf Ihrem Linux-System für sichere Dateiübertragungen verwenden.

Was ist der scp-Befehl in Linux?

Der scp-Befehl ist besonders nützlich für Dateiübertragungen über ein sicheres Netzwerk. Er steht für Secure Copy Protocol und überträgt Daten zwischen zwei Systemen über eine SSH-Verbindung (Secure Shell). Dank der Verschlüsselung durch SSH sind Ihre Dateien sicher. Einfach gesagt, ist scp eine sichere Alternative zum cp-Befehl. Weitere Informationen zu anderen Linux-Terminalbefehlen finden Sie in unserem entsprechenden Artikel.

Syntax und Optionen des scp-Befehls

Bevor wir uns mit der Dateiübertragung befassen, werfen wir einen Blick auf die Syntax und die Optionen des Befehls:

scp <Optionen> <benutzer@quell_ip:pfad/zur/quelldatei> <benutzer@ziel_ip:ziel/pfad>

Die Syntax erläutert:

  • <benutzer@quell_ip:pfad/zur/quelldatei> gibt das Quellsystem an, von dem die Dateien oder Verzeichnisse übertragen werden sollen.
  • <benutzer@ziel_ip:ziel/pfad> definiert das Zielsystem, auf das die Daten übertragen werden.

Wenn einer der Parameter ausgelassen wird, sucht scp zuerst lokal nach der Datei und kopiert sie dann lokal. Hier sind einige Optionen, die Sie mit dem Befehl verwenden können:

Option Beschreibung
-P Bestimmt den Port, der für die Verbindung zum Hostsystem verwendet wird. Standardmäßig ist das Port 22.
-p Behält die ursprünglichen Änderungszeiten, Zugriffszeiten und Modi der Datei beim Kopieren auf das Zielsystem bei.
-r Kopiert ein ganzes Verzeichnis rekursiv auf das Zielsystem.
-J Dient dazu, Quell- und Zielsystem über ein Proxy-System (Jump Host) zu verbinden.
-3 Kopiert Dateien sowohl auf das Zielsystem als auch auf das lokale System.
-4 Erzwingt, dass der scp-Befehl nur IPv4-Adressen verwendet.
-6 Erzwingt, dass der scp-Befehl nur IPv6-Adressen verwendet.

Dateien mit dem scp-Befehl kopieren

Bevor Sie den scp-Befehl nutzen können, müssen einige Bedingungen sowohl auf dem Host- als auch auf dem Zielsystem erfüllt sein:

  • SSH muss installiert sein.
  • Sie benötigen Root-Zugriff oder einen Benutzer mit sudo-Rechten.

Dateien vom lokalen Host zum Remote-Ziel kopieren

Um eine Datei von Ihrem lokalen System zu einem Remote-Ziel zu übertragen, verwenden Sie die folgende Syntax:

scp <Optionen> <pfad_zur_lokalen_datei> <remote_benutzer>@<remote_ziel_ip>:<zielpfad_im_remote>

Ein Beispiel zur Verdeutlichung:

scp test.txt [email protected]:/home/remote2/Dokumente/

Erläuterung:

  • test.txt ist die Datei, die sich im aktuellen lokalen Verzeichnis befindet und übertragen werden soll.
  • test ist der Benutzername auf dem Zielsystem.
  • 139.144.11.105 ist die IP-Adresse des Zielsystems.
  • /home/remote2/Documents/ ist der Speicherort auf dem Zielsystem für die übertragene Datei.

Dateien vom Remote-Host zum lokalen Ziel kopieren

Um eine Datei von einem Remote-Host auf Ihren lokalen Rechner zu übertragen, verwenden Sie diese Syntax:

scp <Optionen> <remote_benutzer>@<remote_host_ip>:<pfad_zur_datei_im_remote> <pfad_zum_speichern>

Beispiel:

scp [email protected]:/home/test/test1.py ~/test1.py

Erläuterung:

  • test ist der Benutzername des Remote-Hosts.
  • 10.10.11.113 ist die IP-Adresse des Remote-Hosts.
  • /home/test/test1.py ist der Pfad der zu übertragenden Datei auf dem Remote-Host.
  • ~/test1.py ist der Name der Datei nach der Übertragung auf den lokalen Computer (im Home-Verzeichnis).

Dateien zwischen zwei Remote-Hosts übertragen

Mit scp können Sie nicht nur Dateien zwischen Ihrem lokalen System und einem Remote-Rechner übertragen, sondern auch zwischen zwei Remote-Systemen. Für die Übertragung zwischen zwei Remotesystemen wird empfohlen, einen privaten und einen öffentlichen SSH-Schlüssel auf dem Quellsystem zu generieren und eine Kopie des öffentlichen Schlüssels auf dem Zielsystem zu speichern.

Um den Fehler „Host Key Verification Failed“ zu umgehen, sollten Sie zusätzlich einen SSH-Schlüssel verwenden. Hier ist eine Anleitung:

1. Generieren Sie ein öffentliches/privates Schlüsselpaar auf dem Quellserver mit diesem Befehl:

ssh-keygen -t <Verschlüsselungsalgorithmus>

2. Für Verschlüsselungsalgorithmen können Sie rsa (der am häufigsten verwendete) oder einen anderen Algorithmus wählen.

3. Sie werden dann aufgefordert, den Speicherort für den SSH-Schlüssel auszuwählen. Speichern Sie ihn an einem beliebigen Ort oder am Standardort.

4. Für die Passphrase können Sie eine beliebige Eingabe machen oder sie leer lassen, indem Sie die Eingabetaste drücken.

5. Kopieren Sie den öffentlichen Schlüssel mit folgendem Befehl auf den Zielserver. Dies ermöglicht eine Anmeldung per ssh ohne Passwort:

ssh-copy-id <Ziel_Benutzername>@<Ziel_IP_Adresse>

Hinweis: Die passwortlose Anmeldung funktioniert nur für den Benutzer, für den Sie den SSH-Schlüssel generiert haben.

6. Nach der Erstellung und Speicherung des SSH-Schlüssels auf dem Remote-Server nutzen Sie diese scp-Syntax, um Dateien zwischen zwei Linux-Systemen auszutauschen:

scp <Optionen> <remote_benutzer_1>@<remote_host_ip>:<pfad_zur_datei> <remote_benutzer_2>@<remote_ziel_ip>:<speicherpfad_remote>

Beispiel:

scp [email protected]:/home/test1/test.txt [email protected]:/home/remote2/Documents/test1.txt

Erläuterung:

  • remote1 ist der Benutzername auf dem Remote-Sender-Host.
  • 10.10.11.113 ist die IP-Adresse des Remote-Sender-Hosts.
  • /home/test1/test.txt ist der Pfad der zu sendenden Datei.
  • remote2 ist der Benutzername im Remote-Empfängerziel.
  • 10.11.27.111 ist die IP-Adresse des Remote-Empfängerziels.
  • /home/remote2/Documents/test1.txt ist der Name und Pfad, unter dem die empfangene Datei gespeichert wird.

Mehrere Dateien mit dem scp-Befehl übertragen

Das Übertragen mehrerer Dateien einzeln kann mühsam sein. Verwenden Sie stattdessen folgende Syntax:

scp <pfad_zu_datei_1> <pfad_zu_datei_2> <remote_empfänger>@<remote_ziel_ip>:<speicherpfad_remote>

Beispiel: Sie möchten die Dateien test1.txt, test2.py, test3.sh und test4.c an einen Remote-Empfänger senden:

scp -P 22 test1.txt test2.py test3.sh test4.c [email protected]:/home/remote_1/Dokumente

Erläuterung:

  • -P 22 gibt an, dass die Verbindung über Port 22 erfolgen soll.
  • test1.txt test2.py test3.sh test4.c sind die Namen der zu übertragenden Dateien.
  • remote_1 ist der Benutzername des Empfängersystems.
  • 10.10.11.113 ist die IP-Adresse des Empfängers.
  • /home/remote_1/Documents ist der Pfad zum Speichern der empfangenen Dateien.

Sie können auch Platzhalter verwenden, um mehrere Dateien mit der gleichen Erweiterung zu senden:

scp <Platzhalter>.<Erweiterung> <remote_empfänger>@<remote_ziel_ip>:<speicherpfad_remote>

Beispiel: Um alle .py-Dateien an einen Remote-Server zu senden, verwenden Sie:

scp *.py [email protected]:/home/remote_1/

Erläuterung:

  • *.py wählt alle Python-Dateien aus.
  • remote1 ist der Benutzername des Empfängers.
  • 10.10.11.113 ist die IP-Adresse des Empfängers.
  • /home/remote_1/ ist der Speicherort für die empfangenen Dateien.

Häufig gestellte Fragen

Ist die SCP-Dateiübertragung sicher?

Das Secure Copy Protocol (scp) verwendet die SSH-Technologie und sorgt für sicheren Datenaustausch durch Verschlüsselung und Authentifizierung zwischen zwei Hosts. So werden Datenintegrität und -sicherheit zwischen zwei Rechnern gewährleistet.

Ist SCP sicherer als SFTP?

Sowohl SCP als auch SFTP bieten vergleichbare Sicherheit. SCP hat jedoch den Vorteil schnellerer Übertragungsraten, was besonders in Netzwerken mit hoher Latenz nützlich ist.

Sichere Dateiübertragung mit dem scp-Befehl in Linux

Jeder Benutzer muss irgendwann Dateien über ein Netzwerk austauschen. Der scp-Befehl ermöglicht eine sichere und effiziente Übertragung auch in Netzwerken mit hoher Latenz. Kenntnisse der verschiedenen scp-Optionen und der Syntax sind hilfreich. Unsere Anleitungen zum Umbenennen einer Datei in Linux und zum Löschen einer Datei in Linux können Ihre Dateiverwaltungsfähigkeiten weiter verbessern. Wir hoffen, dass dieser Artikel Ihnen geholfen hat, den scp-Befehl für Dateiübertragungen in Linux zu verstehen. Bei Problemen mit dem Befehl, hinterlassen Sie einen Kommentar.