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?
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?
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?
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
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
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
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
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
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
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
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
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
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
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
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
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
muster.zip 100% 20KB 31.3KB/s 00:00
#14. Kopieren von Dateien und Beibehaltung symbolischer Links
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
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
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.
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.
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.
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