Website-Suche

SCP Linux Command – Dateien sicher unter Linux übertragen


Linux-Administratoren sollten mit der Befehlszeilenumgebung vertraut sein. Da der GUI-Modus (Graphical User Interface) auf Linux-Servern nicht häufig installiert wird.

SSH ist möglicherweise das beliebteste Protokoll, mit dem Linux-Administratoren die Server auf sichere Weise aus der Ferne verwalten können. In den SSH-Befehl ist der SCP-Befehl integriert, der zum sicheren Kopieren von Dateien zwischen Servern verwendet wird.

Grundlegende Syntax des SCP-Befehls

Der folgende Befehl lautet wie folgt: „source_file_name“ in „destination_folder“ unter „destination_host“ unter Verwendung des „username“ kopieren " Konto.

scp source_file_name username@destination_host:destination_folder

Es gibt viele Parameter im SCP-Befehl, die Sie verwenden können. Hier sind die Parameter, die bei der täglichen Nutzung verwendet werden können.

Dateien sicher unter Linux übertragen

Der einfache SCP-Befehl ohne Parameter kopiert die Dateien im Hintergrund. Benutzer sehen nichts, es sei denn, der Vorgang ist abgeschlossen oder es tritt ein Fehler auf.

Sie können den Parameter „-v“ verwenden, um Debug-Informationen auf dem Bildschirm auszudrucken. Es kann Ihnen beim Debuggen von Verbindungs-, Authentifizierungs- und Konfigurationsproblemen helfen.

Kopieren Sie die Datei vom lokalen Host auf den Remote-Server

Der folgende Befehl kopiert eine Datei „scp-cheatsheet.pdf“ von einem lokalen auf ein Remote-Linux-System im Verzeichnis /home/tecmint.

scp -v scp-cheatsheet.pdf [email :/home/tecmint/.

Beispielausgabe:

Executing: program /usr/bin/ssh host 192.168.0.183, user tecmint, command scp -v -t /home/tecmint/.
OpenSSH_8.2p1 Ubuntu-4ubuntu0.5, OpenSSL 1.1.1f  31 Mar 2020
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug1: Connecting to 192.168.0.183 [192.168.0.183] port 22.
debug1: Connection established.
debug1: identity file /home/tecmint/.ssh/id_rsa type -1
debug1: identity file /home/tecmint/.ssh/id_rsa-cert type -1
debug1: identity file /home/tecmint/.ssh/id_dsa type -1
debug1: identity file /home/tecmint/.ssh/id_dsa-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519 type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519_sk type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519_sk-cert type -1
debug1: identity file /home/tecmint/.ssh/id_xmss type -1
...

Kopieren Sie die Datei vom Remote-Host auf den lokalen Host

Der folgende Befehl kopiert eine Datei „ssh-cheatsheet.pdf“ von einem Remote-Host auf ein lokales System im Verzeichnis /home/tecmint.

scp -v [email :/home/ravi/ssh-cheatsheet.pdf /home/tecmint/.

Beispielausgabe:

Executing: program /usr/bin/ssh host 192.168.0.183, user tecmint, command scp -v -f /home/ravi/ssh-cheatsheet.pdf
OpenSSH_8.2p1 Ubuntu-4ubuntu0.5, OpenSSL 1.1.1f  31 Mar 2020
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug1: Connecting to 192.168.0.183 [192.168.0.183] port 22.
debug1: Connection established.
debug1: identity file /home/tecmint/.ssh/id_rsa type -1
debug1: identity file /home/tecmint/.ssh/id_rsa-cert type -1
debug1: identity file /home/tecmint/.ssh/id_dsa type -1
debug1: identity file /home/tecmint/.ssh/id_dsa-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519 type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519_sk type -1
...

Datei vom Remote-Host auf einen anderen Host kopieren

Der folgende Befehl kopiert eine Datei „ssh-cheatsheet.pdf“ von einem Remote-Host auf ein anderes Remote-Hostsystem im Verzeichnis /home/tecmint.

scp -v [email :/home/ravi/ssh-cheatsheet.pdf [email :/home/anusha/.

Kopieren Sie Dateien mit ursprünglichem Erstellungsdatum und -uhrzeit

Der Parameter „-p“ behält die ursprünglichen Änderungs- und Zugriffszeiten der Dateien bei, während beim Kopieren von Dateien die geschätzte Zeit und die Verbindungsgeschwindigkeit auf dem Bildschirm angezeigt werden.

scp -p scp-cheatsheet.pdf [email :/home/tecmint/.

Beispielausgabe:

[email 's password: 
scp-cheatsheet.pdf                                                                                                                                                                 100%  531   721.4KB/s   00:00    

Scp-Komprimierung beim Kopieren von Dateien

Einer der Parameter, die Ihre Dateiübertragung beschleunigen können, ist der Parameter „-C“, der zum Komprimieren Ihrer Dateien unterwegs verwendet wird. Das Besondere daran ist, dass die Komprimierung nur im Netzwerk erfolgt. Wenn die Datei auf dem Zielserver angekommen ist, hat sie wieder die ursprüngliche Größe wie vor der Komprimierung.

Schauen Sie sich diese Befehle an. Es wird eine einzelne Datei mit 93 MB verwendet.

scp -pv messages.log [email :.

Beispielausgabe:

Executing: program /usr/bin/ssh host 202.x.x.x, user mrarianto, command scp -v -p -t.
OpenSSH_6.0p1 Debian-3, OpenSSL 1.0.1c 10 May 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 202.x.x.x [202.x.x.x] port 22.
debug1: Connection established.
debug1: identity file /home/pungki/.ssh/id_rsa type -1
debug1: Found key in /home/pungki/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: Trying private key: /home/pungki/.ssh/id_rsa
debug1: Next authentication method: password
[email 's password:
debug1: Authentication succeeded (password).
Authenticated to 202.x.x.x ([202.x.x.x]:22).
debug1: Sending command: scp -v -p -t.
File mtime 1323853868 atime 1380425711
Sending file timestamps: T1323853868 0 1380425711 0
messages.log 100% 93MB 58.6KB/s 27:05
Transferred: sent 97614832, received 25976 bytes, in 1661.3 seconds
Bytes per second: sent 58758.4, received 15.6
debug1: Exit status 0

Das Kopieren von Dateien ohne den Parameter „-C“ dauert 1661,3 Sekunden. Sie können das Ergebnis mit dem folgenden Befehl vergleichen, indem Sie den Parameter „-C“ verwenden.

scp -Cpv messages.log [email :.

Beispielausgabe:

Executing: program /usr/bin/ssh host 202.x.x.x, user mrarianto, command scp -v -p -t.
OpenSSH_6.0p1 Debian-3, OpenSSL 1.0.1c 10 May 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 202.x.x.x [202.x.x.x] port 22.
debug1: Connection established.
debug1: identity file /home/pungki/.ssh/id_rsa type -1
debug1: Host '202.x.x.x' is known and matches the RSA host key.
debug1: Found key in /home/pungki/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: Next authentication method: publickey
debug1: Trying private key: /home/pungki/.ssh/id_rsa
debug1: Next authentication method: password
[email 's password:
debug1: Enabling compression at level 6.
debug1: Authentication succeeded (password).
Authenticated to 202.x.x.x ([202.x.x.x]:22).
debug1: channel 0: new [client-session]
debug1: Sending command: scp -v -p -t .
File mtime 1323853868 atime 1380428748
Sending file timestamps: T1323853868 0 1380428748 0
Sink: T1323853868 0 1380428748 0
Sending file modes: C0600 97517300 messages.log
messages.log 100% 93MB 602.7KB/s 02:38
Transferred: sent 8905840, received 15768 bytes, in 162.5 seconds
Bytes per second: sent 54813.9, received 97.0
debug1: Exit status 0
debug1: compress outgoing: raw data 97571111, compressed 8806191, factor 0.09
debug1: compress incoming: raw data 7885, compressed 3821, factor 0.48

Wie Sie sehen, ist der Übertragungsvorgang bei Verwendung der Komprimierung in 162,5 Sekunden abgeschlossen. Es ist 10 schneller, als den Parameter „-C“ nicht zu verwenden. Wenn Sie viele Dateien über das Netzwerk kopieren, hilft Ihnen der Parameter „-C“, die benötigte Gesamtzeit zu verkürzen.

Was wir beachten sollten, ist, dass die Komprimierungsmethode bei keiner Datei funktioniert. Wenn die Quelldatei bereits komprimiert ist, werden Sie dort keine Verbesserung feststellen. Dateien wie .zip-, .rar-, Bilder- und .iso-Dateien sind von der „ -C“-Parameter.

Ändern Sie die SCP-Verschlüsselung in „Dateien verschlüsseln“.

Standardmäßig verwendet SCPAES-128“, um Dateien zu verschlüsseln. Wenn Sie zum Verschlüsseln zu einer anderen Chiffre wechseln möchten, können Sie den Parameter „-c“ verwenden.

Schauen Sie sich diesen Befehl an.

scp -c 3des Label.pdf [email :.

[email 's password:
Label.pdf 100% 3672KB 282.5KB/s 00:13

Der obige Befehl weist SCP an, den 3des-Algorithmus zum Verschlüsseln der Datei zu verwenden. Bitte achten Sie darauf, dass dieser Parameter „-c“ und nicht „-C“ verwendet.

Beschränken der Bandbreitennutzung mit dem SCP-Befehl

Ein weiterer Parameter, der nützlich sein kann, ist der Parameter „-l“. Der Parameter „-l“ begrenzt die zu verwendende Bandbreite. Dies ist nützlich, wenn Sie ein Automatisierungsskript zum Kopieren vieler Dateien ausführen, aber nicht möchten, dass die Bandbreite durch den SCP-Prozess beansprucht wird.

scp -l 400 Label.pdf [email :.

[email 's password:
Label.pdf 100% 3672KB 50.3KB/s 01:13

Der Wert 400 hinter dem Parameter „-l“ bedeutet, dass wir die Bandbreite für den SCP-Prozess auf nur 50 KB/ begrenzen. Sek.

Beachten Sie, dass die Bandbreite in Kilobit/Sek (kbps) angegeben wird. Das bedeutet, dass 8 Bit gleich 1 Byte sind.

Während SCP in Kilobyte/Sek (KB/s) zählt. Wenn Sie also Ihre Bandbreite auf ein SCP-Maximum von nur 50 KB/s beschränken möchten, müssen Sie sie auf 50 einstellen x 8=400.

SCP mit einem anderen Port

Normalerweise verwendet SCP Port 22 als Standardport, aber aus Sicherheitsgründen können Sie den Port auf einen anderen Port ändern. Wir verwenden beispielsweise Port 2249.

Dann sollte der Befehl so aussehen.

scp -P 2249 Label.pdf [email :.

[email 's password:
Label.pdf 100% 3672KB 262.3KB/s 00:14

Stellen Sie sicher, dass ein Großbuchstabe „P“ und nicht „p“ verwendet wird, da „p“ bereits für beibehaltene Zeiten und Modi verwendet wird.

SCP – Dateien und Verzeichnisse rekursiv kopieren

Manchmal müssen wir das Verzeichnis und alle darin enthaltenen Dateien/Verzeichnisse kopieren. Es wäre besser, wenn wir dies in einem einzigen Befehl mit dem Parameter „-r“ tun könnten, der das gesamte Verzeichnis rekursiv kopiert.

scp -r documents [email :.

[email 's password:
Label.pdf 100% 3672KB 282.5KB/s 00:13
scp.txt 100% 10KB 9.8KB/s 00:00

Wenn der Kopiervorgang abgeschlossen ist, finden Sie auf dem Zielserver ein Verzeichnis namens „documents“ mit allen seinen Dateien. Der Ordner „Dokumente“ wird automatisch erstellt.

SCP – Fortschrittsmeldungen deaktivieren

Wenn Sie die Fortschrittsanzeige und Warn-/Diagnosemeldungen von SCP nicht sehen möchten, können Sie sie mit dem Parameter „-q“ deaktivieren. Hier ist ein Beispiel.

scp -q Label.pdf [email :.

[email 's password:
pungki@mint ~/Documents $

Wie Sie sehen, liegen nach der Passworteingabe keine Informationen zum SCP-Prozess vor. Nachdem der Vorgang abgeschlossen ist, wird erneut eine Eingabeaufforderung angezeigt.

SCP – Dateien mit Proxy kopieren

Der Proxyserver wird üblicherweise im Büroumfeld eingesetzt. SCP ist nativ kein Proxy konfiguriert. Wenn Ihre Umgebung einen Proxy verwendet, müssen Sie SCP „anweisen“, mit dem Proxy zu kommunizieren.

Hier ist das Szenario. Die Proxy-Adresse ist 10.0.96.6 und der Proxy-Port ist 8080. Der Proxy implementierte auch die Benutzerauthentifizierung. Zuerst müssen Sie die Datei „~/.ssh/config“ erstellen. Zweitens fügen Sie diesen Befehl ein.

ProxyCommand /usr/bin/corkscrew 10.0.96.6 8080 %h %p ~/.ssh/proxyauth

Dann müssen Sie die Datei „~/.ssh/proxyauth“ erstellen, die Folgendes enthält:

myusername:mypassword

Danach können Sie SCP wie gewohnt transparent durchführen.

Bitte beachten Sie, dass der Korkenzieher möglicherweise noch nicht auf Ihrem System installiert ist. Auf meinem Linux Mint muss ich es zuerst mit dem standardmäßigen Linux Mint-Installationsverfahren installieren.

apt-get install corkscrew

Für andere Yum-basierte Systeme können Benutzer Corkscrew mit dem folgenden Yum-Befehl installieren.

yum install corkscrew

Eine andere Sache ist, dass die Datei „~/.ssh/proxyauth“ Ihren „Benutzernamen“ und Ihr „Passwort“ im Klartextformat enthält Bitte stellen Sie sicher, dass nur Sie auf die Datei zugreifen können.

Wählen Sie eine andere ssh_config-Datei

Für mobile Benutzer, die häufig zwischen Firmennetzwerken und öffentlichen Netzwerken wechseln, ist es problematisch, die Einstellungen im SCP immer ändern zu müssen. Es ist besser, wenn wir eine andere ssh_config-Datei einfügen können, die unseren Anforderungen entspricht.

Proxy wird im Firmennetzwerk verwendet, nicht jedoch im öffentlichen Netzwerk und Sie wechseln regelmäßig das Netzwerk.

scp -F /home/pungki/proxy_ssh_config Label.pdf

[email :.
[email 's password:
Label.pdf 100% 3672KB 282.5KB/s 00:13

Standardmäßig wird die Datei „ssh_config“ pro Benutzer in „~/.ssh/config“ abgelegt. Das Erstellen einer speziellen „ssh_config“-Datei mit Proxy-Kompatibilität erleichtert den Wechsel zwischen Netzwerken.

Wenn Sie sich im Firmennetzwerk befinden, können Sie den Parameter „-F“ verwenden. Wenn Sie sich in einem öffentlichen Netzwerk befinden, können Sie den Parameter „-F“ überspringen.

Das ist alles über SCP. Weitere Einzelheiten finden Sie in den Manpages von SCP. Bitte hinterlassen Sie gerne Kommentare und Vorschläge.