SCP ist eng mit dem SSH-Protokoll verwandt und wurde tatsächlich aus derselben Idee geboren.

SCP stellt als Erweiterung des SSH-Protokolls sicher, dass Daten während der Übertragung vertraulich und unversehrt bleiben.

Lassen Sie uns zunächst verstehen, wie SCP funktioniert, und dann werden wir uns die scp-Befehle ansehen.

Was ist SCP?

A computer with two Secure Copy Protocol monitors and a globe on it.

SCP steht für Secure Copy Protocol.

Es ist eine sichere und effiziente Methode zum Kopieren von Dateien und Verzeichnissen zwischen lokalen und entfernten Hosts oder zwischen zwei entfernten Hosts.

Es wird häufig für die sichere Übertragung von Daten über ein Netzwerk verwendet. SCP basiert auf SSH (Secure Shell), um eine sichere Verbindung herzustellen und die Daten während der Übertragung zu verschlüsseln.

Ganz gleich, ob Sie eine einzelne Datei oder ein ganzes Verzeichnis übertragen müssen, SCP bietet eine zuverlässige Lösung für die Fernübertragung von Dateien.

Wie funktioniert SCP?

Two laptops use Secure Copy Protocol to transfer folders between them.

SCP baut auf dem SSH-Protokoll auf, einem kryptografischen Netzwerkprotokoll für die sichere Fernanmeldung und Befehlsausführung. Es verwendet die gleichen Sicherheitsmechanismen wie SSH, einschließlich Verschlüsselung und Authentifizierung, um Daten während der Übertragung zu schützen.

Bei der Verwendung von SCP initiiert ein Benutzer auf seinem lokalen Rechner einen Kopierbefehl, der die Quelldatei und den Zielspeicherort auf einem entfernten Rechner angibt. SCP stellt eine SSH-Verbindung zu dem entfernten System her und kopiert dann die Dateien sicher von der Quelle zum Ziel.

Wann sollten Sie SCP verwenden?

A computer with a secure file transfer protocol (SFTP) and a gear on it.

SCP ist besonders in den folgenden Szenarien nützlich.

Entfernte Server-Sicherung

Mit SCP können Sie Dateien von einem entfernten Server auf Ihrem lokalen Rechner oder umgekehrt sichern, was Datenredundanz und Disaster Recovery gewährleistet.

Bereitstellung von Anwendungen

Bei der Bereitstellung von Anwendungen auf mehreren Servern vereinfacht SCP den Prozess durch sicheres Kopieren der erforderlichen Dateien auf jedes Zielsystem,

Übertragung großer Dateien

SCP bietet eine vertrauenswürdige und sichere alternative Methode der Datenübertragung für große Dateien, die für den Versand als E-Mail-Anhang zu groß sind.

Sichere Dateifreigabe

SCP sorgt dafür, dass die Daten während der Übertragung verschlüsselt bleiben, wenn Sie vertrauliche Dateien an andere Personen senden.

Remote-Zusammenarbeit

SCP kann verwendet werden, um Dateien sicher mit Mitarbeitern oder Teammitgliedern an verschiedenen Standorten auszutauschen.

SCP-Befehlssyntax

Bevor wir mit der Verwendung des SCP-Befehls beginnen, sollten wir zunächst die grundlegende Syntax verstehen.

Die Syntax des SCP-Befehls sieht wie folgt aus:

scp [Optionen] [Quelle] [Ziel]

Erläuterung der Syntax

Optionen

Dies sind optionale Flags, die das Verhalten des SCP-Befehls verändern. Sie können verschiedene Optionen verwenden, um den Übertragungsprozess individuell zu gestalten. Hier sind einige gängige Optionen:

-r: Kopiert Verzeichnisse und deren Inhalte rekursiv.
-p: Behält die Berechtigungen, Zeitstempel und Modi der Originaldatei bei.
P: Gibt die Portnummer für die SSH-Verbindung an.
i: Gibt die private Schlüsseldatei für die SSH-Authentifizierung an.
-C: Verwenden Sie die Komprimierung, um die Datenübertragung zu beschleunigen.
-l: Begrenzen Sie die für die Übertragung verwendete Bandbreite (in Kbit/s).
-v: Ausführlicher Modus – zeigt Debugging-Meldungen während der Übertragung an.
-o: Übergibt eine Option an den SSH-Client. Sie kann verwendet werden, um die strenge Prüfung des Hostschlüssels zu deaktivieren.

Quelle

Die Quelle gibt die Datei oder das Verzeichnis an, die Sie kopieren möchten. Es kann ein lokaler Pfad oder ein entfernter Pfad sein – je nach Kontext.

Ziel

Das Ziel gibt an, wohin Sie die Quelle kopieren möchten. Wie die Quelle kann auch dies ein lokaler Pfad oder ein entfernter Pfad sein.

Beispiele für Befehle

#1. Kopieren einer Datei vom lokalen zum entfernten Server

scp /pfad/zu/lokal/datei.txt user@remotehost:/pfad/zu/ziel/

/pfad/nach/lokal/datei.txt: Dies ist die Quelldatei, die Sie von Ihrem lokalen Rechner kopieren möchten.

user@remotehost: Ersetzen Sie den Benutzer durch den Namen des entfernten Benutzers und den entfernten Host durch den Hostnamen oder die IP-Adresse des entfernten Servers.

/pfad/zum/ziel/: Dies ist der Zielpfad auf dem entfernten Server, in den die Datei kopiert werden soll.

Beispiel: In meinem Fall habe ich einen Remoteserver für die Übertragung der Datei ausgewählt.

Benutzername des Remote-Hosts – abhishekvarma

Adresse des entfernten Hosts – 192.168.29.70

scp /home/vboxuser/Desktop/sample.zip abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop

Wenn Sie eine Verbindung zu einem entfernten Rechner herstellen, werden Sie nach dem Passwort gefragt. Hier habe ich eine Zip-Datei zum Kopieren ausgewählt.

Ausgabe

Ubuntu command line - secure copy protocol for transferring files.

Die Ausgabe sieht wie folgt aus, wenn kein Fehler bei der Verbindung mit einem entfernten Server auftritt.

sample.zip 100% 20KB 717.9KB/s 00:00

#2. Kopieren einer Datei vom entfernten auf den lokalen Rechner

scp user@remotehost:/path/to/remote/file.txt /Pfad/zum/lokalen/Ziel/

Wie oben, ersetzen Sie den Benutzer und die Adresse des entfernten Rechners.

Beispiel

scp abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop

Ausgabe

A screenshot of a computer screen displaying the Secure Copy Protocol.

Dies ist nur ein Beispiel für die Ausgabe in meinem Fall. Der Zeitstempel variiert je nach Verbindungsgeschwindigkeit.

beispiel.zip 100% 20KB 51.2KB/s 00:00

#3. Ein Verzeichnis rekursiv kopieren

scp user@remotehost:/path/to/remote/file.txt /Pfad/zu/local/Ziel/

Hier weist das Flag ‘-r’ SCP an, Verzeichnisse rekursiv zu kopieren (einschließlich Unterverzeichnisse und deren Inhalte).

Beispiel

scp -r /home/vboxuser/Desktop abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop

Hier habe ich das gesamte Verzeichnis erwähnt, um die Dateien zu kopieren.

Ausgabe

A screenshot of a file transferred securely using the Secure Copy Protocol (SCP) displayed on a computer screen.
beispiel.zip 100% 20KB 1.0MB/s 00:00
Screenshot vom 2023-08-13 21-45-23.png 100% 27KB 1.5MB/s 00:00
.swp 100% 12KB 894.2KB/s 00:00
.help.swp 100% 12KB 780.4KB/s 00:00

#4. Kopieren von Dateien, die einem Muster entsprechen

scp /pfad/zum/local/*.txt user@remotehost:/pfad/zum/ziel/

*.txt – Dies ist ein Platzhaltermuster, das auf alle Dateien mit der Erweiterung .txt im angegebenen lokalen Verzeichnis passt. Quell- und Zielpfad sind die gleichen wie zuvor.

Beispiel

scp /home/vboxuser/Desktop/locfolder/*.png abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop

Ausgabe

Ubuntu ssh client - screenshot thumbnail with Secure Copy Protocol support.

Hier habe ich es mit einer .png-Erweiterung versucht.

Screenshot vom 2023-08-13 21-45-23.png 100% 27KB 1.4MB/s 00:00
Screenshot vom 2023-08-13 21-55-28.png 100% 24KB 1.7MB/s 00:00
Screenshot vom 2023-08-13 22-04-03.png 100% 38KB 2.1MB/s 00:00

#5. Dateiattribute beibehalten

scp -p /pfad/zu/lokal/datei.txt user@remotehost:/pfad/zu/ziel/

Hier bewahrt das Flag ‘-p’ die Änderungszeiten, Zugriffszeiten und Modi der Quelldatei beim Kopieren.

Beispiel

scp -p /home/vboxuser/Desktop/sample.zip abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop

Ausgabe

Ubuntu terminal - screenshot thumbnail with Secure Copy Protocol integration.
sample.zip 100% 20KB 420.0KB/s 00:00

#6. Geben Sie einen anderen SSH-Port an

scp -P 22 /pfad/zu/lokal/datei.txt user@remotehost:/pfad/zu/ziel/

Das Flag ‘-P’ gibt einen anderen SSH-Port (in diesem Fall 22) für die SCP-Verbindung an. Sie können jeden beliebigen Port verwenden.

Beispiel

scp -P 22 /home/vboxuser/Desktop/sample.zip abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop

Ausgabe

A screenshot of a secure copy protocol transfer in an Ubuntu terminal.
sample.zip 100% 20KB 1.2MB/s 00:00

#7. Kopieren mit Komprimierung

scp -C /pfad/zu/lokal/datei.txt user@remotehost:/pfad/zu/ziel/

Dieses ‘-C’ Flag aktiviert die Komprimierung während der Übertragung, wodurch die Größe der übertragenen Daten verringert werden kann. Die Quell- und Zieladresse sind dieselben wie oben beschrieben.

Beispiel

scp -C /home/vboxuser/Desktop/sample.zip abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop

Ausgabe

A screenshot of a computer screen displaying a file transfer using Secure Copy Protocol.
sample.zip 100% 20KB 985.8KB/s 00:00

#8. Ausführliche Ausgabe zur Fehlersuche

scp -v /pfad/zu/local/file.txt user@remotehost:/pfad/zu/ziel/

Mit der Option ‘-v’ aktivieren Sie die ausführliche Ausgabe, die detailliertere Informationen während des Übertragungsvorgangs liefert.

Beispiel

scp -v /home/vboxuser/Desktop/sample.zip abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop

Ausgabe

Ubuntu terminal - Secure Copy Protocol.

Die Ausgabe des Beispiels sieht wie folgt aus.

Ausgeführt: Programm /usr/bin/ssh Host 192.168.29.70, Benutzer abhishekvarma, Befehl scp -v -t /Users/abhishekvarma/Desktop OpenSSH_8.9p1 Ubuntu-3ubuntu0.3, OpenSSL 3.0.2 15 Mar 2022
debug1: Lesen der Konfigurationsdaten /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config Zeile 19: include /etc/ssh/ssh_config.d/*.conf passt zu keinen Dateien
debug1: /etc/ssh/ssh_config Zeile 21: Optionen für * anwenden
debug1: Verbindung zu 192.168.29.70 [192.168.29.70] Port 22. debug1: Verbindung hergestellt.
debug1: Identitätsdatei /root/.ssh/id_rsa Typ -1
debug1: Identitätsdatei /root/.ssh/id_rsa-cert Typ -1 debug1: Identitätsdatei /root/.ssh/id_ecdsa Typ -1 debug1: Identitätsdatei /root/.ssh/id_ecdsa-cert Typ -1 debug1: Identitätsdatei /root/.ssh/id_ecdsa_sk Typ -1 debug1: Identitätsdatei /root/.ssh/id_ecdsa_sk-cert Typ -1

#9. Kopieren von Remote nach Local mit ausführlicher Ausgabe

scp -v user@remotehost:/path/to/remote/file.txt /Pfad/zu/lokal/Ziel/

Dieselben Erklärungen wie im vorherigen ausführlichen Beispiel, wobei die Rollen von lokalem und entferntem Speicherort vertauscht sind.

Beispiel

scp -v abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop

Ausgabe

A screenshot demonstrating the Secure Copy Protocol implemented in a python script on a pc.

Die Ausgabe sieht wie folgt aus.

Ausgeführt: Programm /usr/bin/ssh Host 192.168.29.70, Benutzer abhishekvarma, Befehl scp -v -f /Benutzer/abhishekvarma/Desktop/sample.zip OpenSSH_8.9p1 Ubuntu-3ubuntu0.3, OpenSSL 3.0.2 15 Mar 2022
debug1: /etc/ssh/ssh_config Zeile 19: include /etc/ssh/ssh_config.d/*.conf entspricht keinen Dateien
debug1: Lesen der Konfigurationsdaten /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config Zeile 21: Anwenden von Optionen für *
debug1: Verbindung zu 192.168.29.70 [192.168.29.70] Port 22. debug1: Verbindung hergestellt.
debug1: Identitätsdatei /root/.ssh/id_rsa Typ -1
debug1: Identitätsdatei /root/.ssh/id_rsa-cert Typ -1 debug1: Identitätsdatei /root/.ssh/id_ecdsa Typ -1 debug1: Identitätsdatei /root/.ssh/id_ecdsa-cert Typ -1 debug1: Identitätsdatei /root/.ssh/id_ecdsa_sk Typ -1 debug1: Identitätsdatei /root/.ssh/id_ecdsa_sk-cert Typ -1

#10. Kopieren mit anderem SSH-Schlüssel


scp -i /Pfad/zu/privater_Schlüssel.pem /Pfad/zu/lokal/Datei.txt user@remotehost:/Pfad/zu/Ziel/

Mit dem Flag “-i /pfad/zu/privater_Schlüssel.pem” geben Sie einen anderen privaten SSH-Schlüssel für die Authentifizierung an.

Beispiel

scp -i /pfad/zum/privaten_Schlüssel.pem /home/vboxuser/Desktop/sample.zip abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop

Ausgabe

Ubuntu terminal - screenshot thumbnail featuring Secure Copy Protocol.

Wenn Sie einen privaten Schlüssel haben, können Sie ihn verwenden, andernfalls können Sie den Standardschlüssel verwenden.

sample.zip 100% 20KB 1.1MB/s 00:00

#11. Kopieren mehrerer Dateien auf den Remote-Server

scp datei1.txt datei2.txt user@remotehost:/pfad/zum/ziel/

Dieser Befehl kopiert file1.txt und file2.txt aus dem lokalen Verzeichnis in das angegebene Ziel auf dem Remote-Server.

Beispiel

scp /home/vboxuser/Desktop/image.png /home/vboxuser/Desktop/sample.zip abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop 

Ausgabe

Ubuntu terminal - screenshot thumbnail with Secure Copy Protocol.
bild.png 100% 39KB 1.4MB/s 00:00
probe.zip 100% 20KB 1.5MB/s 00:00

#12. Kopieren einer entfernten Datei mit einem anderen Namen

scp user@remotehost:/path/to/remote/file.txt /pfad/nach/lokal/neuerdateiname.txt

Dieser Befehl kopiert file.txt vom entfernten Server in das lokale Verzeichnis und benennt die Datei dabei in newfilename.txt um.

Beispiel

scp abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop/newfile.zip

Ausgabe

A secure screenshot of a python program on a phone utilizing the Secure Copy Protocol.

Die alte und die neue Dateierweiterung sollten bei der Ausführung dieses Befehls identisch sein.

beispiel.zip 100% 20KB 28.7KB/s 00:00

#13. Kopieren mit spezifischer Bandbreitenbegrenzung

scp -l 1000 /pfad/zu/lokal/datei.txt user@remotehost:/pfad/zu/ziel/

Dieses ‘-l’ Flag gibt ein Bandbreitenlimit in Kbps (in diesem Fall 1000 Kbps) für die Übertragung an.

Beispiel

scp -l 300 /home/vboxuser/Desktop/sample.zip abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop

Ausgabe

Ubuntu terminal - screenshot thumbnail using Secure Copy Protocol for file transfer.
muster.zip 100% 20KB 31.3KB/s 00:00
scp -rp /pfad/zur/lokalen/quelle/ user@remotehost:/pfad/zum/ziel/

Mit dem Flag ‘-p’ bleiben die Dateiattribute erhalten und mit dem Flag -r werden Verzeichnisse rekursiv kopiert. Dieser Befehl behält auch symbolische Links während des Kopiervorgangs bei.

Beispiel

scp -rp /home/vboxuser/Desktop/image.png abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop

Ausgabe

Ubuntu terminal - screenshot thumbnail for Secure Copy Protocol.
bild.png 100% 39KB 1.8MB/s 00:00

#15. Kopieren von Dateien mit Komprimierung (Verbosely)

scp -vC /pfad/zu/lokal/datei.txt user@remotehost:/pfad/zu/ziel/

Dieser Befehl kombiniert sowohl die ausführliche Ausgabe (-v) als auch die Komprimierung (-C) während der Dateiübertragung.

Beispiel

scp -vC /home/vboxuser/Desktop/image.png abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop

Ausgabe

A screenshot of a computer screen displaying a Secure Copy Protocol (SCP) session with a list of files.

Die Ausgabe sieht wie folgt aus.

scp: debug1: fd 3 löscht O_NONBLOCK
Senden der Datei modes: C0664 40050 bild.png
Senke: C0664 40050 bild.png
bild.png
d 6 löscht O_NONBLOCK
scp: debug1: fd - Löschung von O_NONBLOCK
bild.png
debug1: client_input_channel_req: Kanaltyp exit-status Antwort debug1: Kanal 0: frei: client-session, Kanäle 1
Übertragen: gesendet 40220, empfangen 2576 Bytes, in 0.1 Sekunden
Bytes pro Sekunde: gesendet 352570.0, empfangen 22581.3
root@ubuntu: ~
debug1: Beenden Status 0
debug1: komprimieren ausgehend: Rohdaten 40287, komprimiert 38198, Faktor 0.95 debug1: komprimieren eingehend: Rohdaten 792, komprimiert 757, Faktor 0.96 

#16. Kopieren zwischen zwei entfernten Servern

Wenn Sie Dateien von einem entfernten Server auf einen anderen übertragen möchten, können Sie diesen Befehl verwenden.

scp user1@remotehost1:/path/to/remote/file.txt user2@remotehost2:/pfad/zum/ziel/

Dieser Befehl überträgt file.txt direkt von remotehost1 auf remotehost2.

Beispiel

scp user1@remotehost1:/path/to/remote/file.txt abhishekvarma@192.168.29.70:/Users/abhishekvarma/Desktop

Ausgabe

datei.txt 100% 512KB 512.0KB/s 00:00

Wenn während der Übertragung Fehler oder Probleme auftreten, werden in der Ausgabe möglicherweise Fehlermeldungen angezeigt, die Aufschluss darüber geben, was schief gelaufen ist.

ssh: Verbindung zum Host source.example.com Port 22: Verbindung abgelehnt
verbindung verloren

In diesem Fall deutet die Fehlermeldung darauf hin, dass die SSH-Verbindung zum Quellserver abgelehnt wurde. Dafür kann es verschiedene Gründe geben, z.B. einen falschen Hostnamen, eine falsche IP-Adresse, einen falschen Port oder Probleme mit der SSH-Konfiguration.

Häufig gestellte Fragen zu SCP

Hier finden Sie einige häufig gestellte Fragen zum SCP-Protokoll sowie die entsprechenden Antworten.

Wie unterscheidet sich SCP von FTP oder SFTP?

FTP steht für File Transfer Protocol.

SFTP steht für File Transfer Protocol. Beide werden für Dateiübertragungen verwendet.

SCP funktioniert über SSH und bietet sowohl Verschlüsselung als auch Authentifizierung in einem einzigen Protokoll, was es sicherer und effizienter macht.

Wann sollte ich SCP verwenden?

SCP eignet sich am besten für Szenarien, in denen sichere und zuverlässige Dateiübertragungen erforderlich sind, z.B. für Remote-Backups, die Bereitstellung von Software, die Verteilung von Konfigurationsdateien und die Zusammenarbeit zwischen Teammitgliedern.

Ist SCP mit IPv6-Adressen kompatibel?

Ja, SCP unterstützt sowohl IPv4- als auch IPv6-Adressen, so dass Sie Dateien über Netzwerke übertragen können, die ein beliebiges Adressierungsschema verwenden.

Conclusion✍️

Ich hoffe, dass Ihnen dieser Artikel geholfen hat, mehr über SCP und seine Funktionsweise zu erfahren.

Vielleicht interessieren Sie sich auch für die Linux-Befehle für Systemadministratoren