So verwenden Sie den Befehl scp für die sichere Dateiübertragung unter Linux

Angenommen, Sie möchten einige Dateien zwischen Servern auf einem Linux-System übertragen. Es gibt viele Möglichkeiten, wie Sie diese Aufgabe erledigen können, aber wenn Ihre Priorität die sichere Dateiübertragung ist, bleiben Ihnen nur wenige Optionen. Die einfachste Lösung besteht darin, den Befehl scp oder secure copy zu verwenden, um Dateien zu übertragen, ohne sich Gedanken über die Sicherheit machen zu müssen. In diesem Artikel erklären wir, wie Sie scp sicher verwenden, um Dateien auf Ihrem Linux-System zu übertragen.

Dateiübertragung mit dem scp-Befehl in Linux (2023)

Was ist der scp-Befehl unter Linux

Wenn es darum geht, Dateien über ein sicheres Netzwerk zu übertragen, kann der Befehl scp sehr nützlich sein. Es steht für Secure Copy Protocol und überträgt Dateien und Verzeichnisse zwischen zwei Systemen über eine SSH-Verbindung (Secure Shell). Mit ssh können Sie sich der Sicherheit Ihrer Dateien sicher sein, da diese standardmäßig verschlüsselt sind. Einfacher ausgedrückt ist der scp-Befehl eine sicherere Version des cp-Befehls, über den Sie alles in unserem Artikel über Linux-Terminalbefehle lesen können.

Verwendung des scp-Befehls: Syntax und Optionen

Bevor wir Dateien über scp übertragen können, werfen wir einen Blick auf die Syntax und die Optionen des Befehls gleich hier:

scp <option> <[email protected]_ip_address:path/to/source/file> <[email protected]_ip_address:target/path>

Syntax verstehen:

  • Erste, <[email protected]_ip_address:path/to/source/file> gibt das ‘Quellsystem’ an, von dem Sie Ihre Dateien/Verzeichnisse übertragen müssen.
  • Andere, <[email protected]_ip_address:target/path> gibt das ‘Ziel’-System an, auf das Sie Ihre Dateien/Verzeichnisse übertragen möchten.

Wenn Sie einen der oben genannten Parameter belassen, sucht der scp-Befehl in Linux zuerst nach der Datei und kopiert sie dann lokal. Einige der Optionen zum Koppeln mit dem Befehl sind:

Möglichkeiten Ziel
-P Legt fest, welcher Port mit dem Hauptsystem verbunden ist. Wenn es weggelassen wird, wird standardmäßig Port 22 verwendet.
-p Behält Änderungszeiten, Zugriffszeiten und Modi aus der Quelldatei beim Kopieren auf das Zielsystem bei.
-r Kopiert rekursiv das gesamte Verzeichnis auf das Zielsystem.
-J Es dient dazu, die Quell- und Zielsysteme über ein Proxy-System (Jump-Host) zu verbinden.
-3 Wenn dieses Flag verwendet wird, kopiert es Dateien sowohl auf das Zielsystem als auch auf das lokale System
-4 zwingt den scp-Befehl, nur IPv4-Adressen zu verwenden.
-6 zwingt den scp-Befehl, nur IPv6-Adressen zu verwenden.

So kopieren Sie Dateien mit dem scp-Befehl

Bevor Sie den scp-Befehl unter Linux verwenden, müssen Sie einige Voraussetzungen auf dem Host- und Zielsystem erfüllen:

  • ssh sollte installiert sein
  • Root-Zugriff oder jeder Benutzer mit sudo-Berechtigungen

Kopieren Sie Dateien von einem lokalen Computer zu einem entfernten Ziel

Wenn Sie eine Datei haben, die Sie von Ihrem lokalen System auf ein entferntes Ziel übertragen müssen, sollten Sie die folgende Syntax verwenden:

scp <options> <path_to_local_file> <remote_user>@<remote_target_ip_address>:<path_to_store_in_remote_destination>

Wenn die obige Syntax kompliziert erscheint, wird ein Beispiel es verdeutlichen:

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

Im obigen Beispiel:

  • test.txt ist der Name der übertragenen Datei und befindet sich im aktuellen lokalen Systemverzeichnis.
  • test ist der Benutzername auf dem Zielsystem.
  • 139.144.11.105 ist die IP-Adresse des Zielsystems.
  • /home/remote2/Documents/ ist der Ort auf dem Zielsystem, an dem die hochgeladene Datei gespeichert wird.
Datei vom lokalen System auf den entfernten Empfänger übertragen - scp-Befehl linux

Kopieren Sie Dateien vom Remote-Host auf das lokale Ziel

Wenn Sie eine Datei von einem Remote-Host auf Ihren lokalen Computer übertragen müssen, verwenden Sie die folgende scp-Befehlssyntax auf Ihrem Linux-System:

scp <options> <remote_user>@<remote_host_ip_address>:<path_of_file_to_transfer> <path_to_store_file>

Angenommen, Sie müssen eine Datei namens test.py von einem Remote-Server hochladen, an dem Sie arbeiten, verwenden Sie diesen Befehl:

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

In diesem Beispiel:

  • test ist der Benutzername des Remotehosts.
  • 10.10.11.113 ist die IP-Adresse des Remote-Hosts.
  • /home/test/test1.py ist der Pfad der Datei, die vom entfernten Host übertragen wird.
  • ~/test1.py ist der Name der Datei, nachdem sie auf den lokalen Computer übertragen und im Home-Verzeichnis gespeichert wurde.
Datei vom Remote-Server an das lokale System senden - scp-Befehl linux

Übertragen von Dateien von einem Remote-Host zu einem anderen Remote-Ziel

Mit dem scp-Befehl können Sie nicht nur Dateien zwischen dem lokalen System und einem Remote-Rechner übertragen, sondern auch Dateiübertragung zwischen zwei entfernten Systemen. Bevor Sie jedoch Dateien von einem entfernten System auf ein anderes entferntes System übertragen können, wird empfohlen, einen privaten SSH-Schlüssel und einen öffentlichen SSH-Schlüssel auf dem Quellsystem zu generieren und eine Kopie des öffentlichen Schlüssels auf dem Zielsystem zu speichern.

Im Allgemeinen beschweren sich Benutzer über den Fehler „Host-Schlüsselüberprüfung fehlgeschlagen“, wenn Dateien zwischen zwei Remote-Systemen übertragen werden. Um den Fehler zu umgehen, verwenden Sie als zusätzliche Maßnahme einen ssh-Schlüssel. Hier haben wir erklärt, wie Sie es tun können:

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

ssh-keygen -t <encryption_algorithm>

2. Für Verschlüsselungsalgorithmen können Sie “rsa“, das ist der am häufigsten verwendete Algorithmus, oder ein anderer Algorithmus Ihrer Wahl.

3. Sie werden dann aufgefordert, einen Speicherort für den SSH-Schlüssel auszuwählen. Sie können es an einem beliebigen Ort Ihrer Wahl oder am Standardort speichern.

4. Für das Passwort können Sie alles Ihrer Wahl eingeben oder es leer lassen, indem Sie die Eingabetaste drücken.

Generieren eines SSH-Schlüssels und Senden einer Kopie an das empfangende System

5. Kopieren Sie dann den öffentlichen Schlüssel mit dem folgenden Befehl auf den Zielserver. Damit können Sie sich sogar ohne Passwort per ssh am Zielsystem anmelden.

ssh-copy-id <destination_username>@<destination_ip_address>

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

6. Nachdem Sie den ssh-Schlüssel auf dem Remote-Server erstellt und gespeichert haben, verwenden Sie diese scp-Befehlssyntax, um Dateien zwischen zwei Remote-Systemen auszutauschen, auf denen Linux ausgeführt wird:

scp <options> <remote_user_1>@<remote_host_ip_address>:<path_of_file_to_transfer> <remote_user_2>@<remote_target_ip_address>:<path_to_store_in_remote_destination>

Dateiübertragung zwischen zwei entfernten Systemen - scp-Befehl linux

Nehmen wir an, Sie müssen eine Datei namens test.txt von einem Remote-Computer auf einen anderen Remote-Empfänger übertragen, verwenden Sie den Befehl:

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

In diesem Beispiel:

  • remote1 ist der Benutzername auf dem Host des entfernten Absenders
  • 10.10.11.113 ist die IP-Adresse des Remote-Sender-Hosts
  • /home/test1/test.txt ist der Pfad zu der zu sendenden Datei
  • remote2 ist der Benutzername im Ziel des entfernten Empfängers
  • 10.11.27.111 ist die IP-Adresse des Zielfernempfängers
  • /home/remote2/Documents/test1.txt ist der Name und Pfad, der für die empfangene Datei gespeichert werden soll.

Übertragen mehrerer Dateien mit dem scp-Befehl

Das Übertragen mehrerer Dateien nacheinander kann für jeden eine mühsame Aufgabe sein. Stattdessen können Sie die folgende Syntax verwenden, um Dateien mit dem scp-Befehl unter Linux auszutauschen:

scp <path_to_file_1> <path_to_file_2> <remote_receiver>@<remote_target_ip_address>:<path_to_store_in_remote_destination>

Angenommen, Sie müssen beispielsweise vier Dateien, einschließlich test1.txt, test2.py, test3.sh und test4.c, an einen entfernten Empfänger senden, können Sie den folgenden Befehl verwenden:

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

Lassen Sie uns verstehen, wie der Befehl im Beispiel funktioniert und was er tut:

  • -p 2222 Wird verwendet, um die Verbindung über Port 22 zu bestimmen
  • test1.txt test2.py test3.sh test4.c sind die Namen der übertragenen Dateien
  • remote_1 ist der Benutzername des empfangenden Systems
  • 10.10.11.113 ist die IP-Adresse des Empfängers
  • /home/remote_1/Documents bezieht sich auf den Speicherpfad der empfangenen Datei.
Übertragen mehrerer Dateien mit dem scp-Befehl

Sie können sogar Platzhalter verwenden, um mehrere Dateien mit derselben Erweiterung zu senden, wie unten gezeigt:

scp <wildcard>.<extension> <remote_receiver>@<remote_target_ip_address>:<path_to_store_in_remote_destination>

Zum Beispiel, wenn es sein muss Senden Sie alle .py-Dateien an den Remote-ServerVerwenden Sie den folgenden scp-Befehl in einem Linux-Terminal:

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

Hier,

  • *.py zeigt alle Python-Dateien an
  • 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 empfangene Datei
Mehrere Dateien mit derselben Erweiterung auswählen und übertragen

Häufig gestellte Fragen

Ist die SCP-Dateiübertragung sicher?

Secure Copy Protocol oder scp ist ein auf SSH-Technologie basierendes Protokoll, das Verschlüsselung und Authentifizierung verwendet, um Dateien zwischen zwei Hosts auszutauschen. Dies gewährleistet vollständige Datensicherheit und -integrität zwischen den beiden Hosts.

Ist SCP sicherer als SFTP?

Sowohl das SCP- als auch das SFTP-Protokoll sind in Bezug auf die Sicherheit gleich. Der Hauptvorteil der Verwendung von scp gegenüber SFTP sind die hohen Übertragungsgeschwindigkeiten, die besonders in Netzwerken mit hoher Latenz nützlich sind.

Sichere Dateiübertragung mit dem scp-Befehl in Linux

Irgendwann muss jeder Benutzer einige Dateien über das Netzwerk austauschen. Der Befehl scp erleichtert die sichere und effiziente Übertragung von Dateien auch in einem Netzwerk mit hoher Latenz. Natürlich kann es auch nützlich sein, die verschiedenen scp-Optionen und die Syntax zu kennen. Sie können auch unsere Anleitungen zum Umbenennen einer Datei in Linux und zum Löschen einer Datei in Linux lesen, um Ihre Dateiverwaltungsfähigkeiten auf dem Betriebssystem weiter zu verbessern. Wir hoffen, dass dieser Artikel Ihnen dabei geholfen hat, den scp-Befehl zum Übertragen von Dateien auf Linux-Computern zu verwenden. Wenn Sie bei der Verwendung des Befehls auf Probleme stoßen, teilen Sie uns dies bitte im Kommentarbereich mit.

Published
Categorized as News

Leave a comment

Your email address will not be published. Required fields are marked *