Vyhledávání na webu

SCP Linux Command – Bezpečný přenos souborů v Linuxu


Správci Linuxu by měli být obeznámeni s prostředím příkazového řádku. Vzhledem k tomu, že režim GUI (Graphical User Interface) na serverech Linux není běžně instalován.

SSH může být nejoblíbenější protokol, který umožňuje správcům systému Linux spravovat servery vzdáleným bezpečným způsobem. S příkazem SSH je zabudován příkaz SCP, který se používá ke kopírování souborů mezi servery bezpečným způsobem.

Základní syntaxe příkazu SCP

Níže uvedený příkaz se bude číst jako kopie „název_zdrojového_souboru“ do „cílová_složka“ na „cílový_hostitel“ pomocí „uživatelského jména ” účet.

scp source_file_name username@destination_host:destination_folder

V příkazu SCP je mnoho parametrů, které můžete použít. Zde jsou parametry, které lze používat při každodenním používání.

Bezpečně přenášejte soubory v Linuxu

Základní příkaz SCP bez parametrů zkopíruje soubory na pozadí. Uživatelé neuvidí nic, dokud není proces dokončen nebo se neobjeví nějaká chyba.

Pomocí parametru „-v“ můžete vytisknout informace o ladění na obrazovku. Může vám pomoci ladit problémy s připojením, autentizací a konfigurací.

Zkopírujte soubor z místního hostitele na vzdálený server

Následující příkaz zkopíruje soubor „scp-cheatsheet.pdf“ z místního do vzdáleného systému Linux do adresáře /home/tecmint.

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

Ukázkový výstup:

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
...

Zkopírujte soubor ze vzdáleného hostitele na místního hostitele

Následující příkaz zkopíruje soubor „ssh-cheatsheet.pdf“ ze vzdáleného hostitele do místního systému v adresáři /home/tecmint.

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

Ukázkový výstup:

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
...

Zkopírujte soubor ze vzdáleného hostitele na jiného hostitele

Následující příkaz zkopíruje soubor „ssh-cheatsheet.pdf“ ze vzdáleného hostitele do jiného vzdáleného hostitelského systému v adresáři /home/tecmint.

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

Kopírování souborů s původním datem a časem vytvoření

Parametr „-p“ zachová původní úpravy souborů a časy přístupu při kopírování souborů spolu s odhadovaným časem a rychlostí připojení, které se zobrazí na obrazovce.

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

Ukázkový výstup:

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

Scp komprese při kopírování souborů

Jedním z parametrů, které mohou urychlit přenos souborů, je parametr „-C“, který se používá ke kompresi souborů na cestách. Jedinečné je, že komprese probíhá pouze v síti. Když soubor dorazí na cílový server, vrátí se do původní velikosti jako před komprimací.

Podívejte se na tyto příkazy. Používá jeden soubor 93 Mb.

scp -pv messages.log [email :.

Ukázkový výstup:

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

Kopírování souborů bez parametru „-C“ bude mít za následek 1661,3 sekund. Výsledek můžete porovnat s příkazem níže pomocí parametru „-C“.

scp -Cpv messages.log [email :.

Ukázkový výstup:

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

Jak můžete vidět, když používáte kompresi, proces přenosu je dokončen za 162,5 sekund. Je to 10krát rychlejší než bez použití parametru „-C“. Pokud kopírujete velké množství souborů přes síť, parametr „-C“ by vám pomohl zkrátit celkový čas, který potřebujete.

Věc, které bychom si měli všimnout je, že metoda komprese nebude fungovat na žádné soubory. Když je zdrojový soubor již zkomprimován, nenajdete tam žádné vylepšení. Soubory jako .zip, .rar, obrázky a .iso nebudou ovlivněny „ -C” parametr.

Změňte šifru SCP na šifrování souborů

Ve výchozím nastavení SCP používá k šifrování souborů „AES-128“. Chcete-li ji zašifrovat na jinou šifru, můžete použít parametr „-c“.

Podívejte se na tento příkaz.

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

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

Výše uvedený příkaz říká SCP, aby k zašifrování souboru použil algoritmus 3des. Dávejte pozor, aby tento parametr používal „-c“ nikoli „-C“.

Omezení využití šířky pásma pomocí příkazu SCP

Dalším parametrem, který může být užitečný, je parametr „-l“. Parametr „-l“ omezí použitou šířku pásma. Bude to užitečné, pokud pomocí automatizačního skriptu zkopírujete velké množství souborů, ale nechcete, aby byla šířka pásma vyčerpána procesem SCP.

scp -l 400 Label.pdf [email :.

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

Hodnota 400 za parametrem „-l“ znamená, že omezujeme šířku pásma pro proces SCP na pouhých 50 KB/ sec.

Jedna věc, kterou je třeba si zapamatovat, je, že šířka pásma je specifikována v kilobitech/s (kbps). Znamená to, že 8 bitů se rovná 1 bajtu.

Zatímco SCP se počítá v Kilobajtech/s (KB/s). Pokud tedy chcete omezit svou šířku pásma na SCP maximálně pouze 50 KB/s, musíte ji nastavit na 50 x 8=400.

SCP s jiným portem

SCP obvykle používá port 22 jako výchozí port, ale z bezpečnostních důvodů můžete port změnit na jiný. Například používáme port 2249.

Pak by měl příkaz vypadat takto.

scp -P 2249 Label.pdf [email :.

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

Ujistěte se, že používá velké „P“, nikoli „p“, protože „p“ se již používá pro zachované časy a režimy.

SCP – Rekurzivní kopírování souborů a adresářů

Někdy potřebujeme zkopírovat adresář a všechny soubory/adresáře v něm. Bude lepší, když to uděláme jediným příkazem pomocí parametru „-r“, který rekurzivně zkopíruje celý adresář.

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

Po dokončení procesu kopírování najdete na cílovém serveru adresář s názvem „documents “ se všemi jeho soubory. Automaticky se vytvoří složka „documents “.

SCP – Zakázat zprávy o průběhu

Pokud se rozhodnete nezobrazovat ukazatel průběhu a varovné/diagnostické zprávy od SCP, můžete je deaktivovat pomocí parametru „-q“. Zde je příklad.

scp -q Label.pdf [email :.

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

Jak vidíte, po zadání hesla nejsou žádné informace o procesu SCP. Po dokončení procesu se znovu zobrazí výzva.

SCP – Kopírování souborů pomocí proxy

Proxy server se obvykle používá v kancelářském prostředí. Nativně SCP není nakonfigurovaný proxy. Když vaše prostředí používá proxy, musíte „řeknout“ SCP, aby komunikovalo s proxy.

Zde je scénář. Adresa proxy je 10.0.96.6 a port proxy je 8080. Proxy také implementovalo ověřování uživatelů. Nejprve musíte vytvořit soubor „~/.ssh/config“. Zadruhé do něj vložíte tento příkaz.

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

Poté musíte vytvořit soubor „~/.ssh/proxyauth“, který obsahuje.

myusername:mypassword

Poté můžete provádět SCP transparentně jako obvykle.

Upozorňujeme, že vývrtka možná ještě není ve vašem systému nainstalována. Na mé Linux Mint jej musím nejprve nainstalovat pomocí standardního instalačního postupu Linux Mint.

apt-get install corkscrew

U jiných systémů založených na yum mohou uživatelé nainstalovat vývrtku pomocí následujícího příkazu yum.

yum install corkscrew

Další věcí je, že protože soubor „~/.ssh/proxyauth“ obsahuje vaše „uživatelské jméno“ a „heslo“ ve formátu prostého textu , ujistěte se prosím, že k souboru máte přístup pouze vy.

Vyberte jiný soubor ssh_config

Pro mobilní uživatele, kteří často přecházejí mezi firemní a veřejnou sítí, bude utrpení neustále měnit nastavení v SCP. Je lepší, když můžeme vložit jiný soubor ssh_config, který odpovídá našim potřebám.

Proxy se používá ve firemní síti, ale ne ve veřejné síti a sítě pravidelně přepínáte.

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

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

Ve výchozím nastavení bude soubor „ssh_config“ na uživatele umístěn do „~/.ssh/config“. Vytvoření specifického souboru „ssh_config“ s kompatibilitou proxy usnadní přepínání mezi sítěmi.

Když jste ve firemní síti, můžete použít parametr „-F“. Když jste ve veřejné síti, můžete přeskočit parametr „-F“.

To je vše o SCP. Další podrobnosti naleznete na manových stránkách SCP. Neváhejte zanechat komentáře a návrhy.