Protokol SCP úzce souvisí s protokolem SSH a ve skutečnosti se zrodil ze stejné myšlenky, která stála za vznikem SSH.
SCP, jako rozšíření SSH, zaručuje, že přenášená data zůstanou v průběhu celého procesu důvěrná a nepozměněná.
Nejprve si objasníme, jak SCP funguje, a následně se podíváme na konkrétní příkazy scp.
Co je SCP?
SCP je zkratka pro Secure Copy Protocol, tedy protokol pro bezpečné kopírování.
Jedná se o spolehlivou a bezpečnou metodu pro přenos souborů a celých adresářů mezi lokálním a vzdáleným počítačem, případně mezi dvěma vzdálenými stroji.
Je hojně využíván pro zabezpečený přenos dat v síťovém prostředí. SCP se spoléhá na protokol SSH (Secure Shell) pro vytvoření zabezpečeného spojení a šifrování dat během samotného přenosu.
Ať už potřebujete přesunout jednotlivý soubor, nebo kompletní adresářovou strukturu, SCP nabízí robustní a ověřené řešení pro vzdálený přenos dat.
Jak SCP funguje?
SCP je postaven na protokolu SSH, který představuje šifrovaný síťový protokol pro bezpečné vzdálené přihlašování a spouštění příkazů. Pro ochranu dat využívá stejné bezpečnostní mechanizmy jako SSH, včetně šifrování a autentizace.
Při použití SCP uživatel na svém lokálním počítači zadá příkaz ke kopírování, přičemž specifikuje zdrojový soubor a cílové umístění na vzdáleném počítači. SCP naváže SSH spojení se vzdáleným systémem a poté bezpečně zkopíruje data ze zdroje do cíle.
Kdy použít SCP?
SCP je obzvláště užitečné v následujících situacích:
Zálohování vzdáleného serveru
SCP umožňuje vytvářet zálohy dat ze vzdáleného serveru na váš lokální počítač, nebo naopak. Tím je zajištěna redundance dat a možnost obnovy po havárii.
Nasazování aplikací
Zjednodušuje proces nasazování aplikací na více serverů díky bezpečnému přenosu potřebných souborů na cílové systémy.
Přenos velkých souborů
Pro velké soubory, které jsou příliš rozsáhlé pro zasílání e-mailem, nabízí SCP důvěryhodný a bezpečný způsob přenosu dat.
Zabezpečené sdílení souborů
SCP zajišťuje šifrování dat během přenosu, což umožňuje bezpečné sdílení důvěrných souborů s ostatními.
Spolupráce na dálku
SCP lze využít pro zabezpečené sdílení souborů s kolegy nebo členy týmu, kteří se nacházejí na různých místech.
Syntaxe příkazu SCP
Než začneme s praktickým používáním příkazu SCP, pojďme se podívat na jeho základní syntaxi.
Syntaxe příkazu SCP vypadá následovně:
scp [volby] [zdroj] [cíl]
Vysvětlení syntaxe
Volby
Jedná se o nepovinné přepínače, které upravují chování příkazu SCP. Můžete je využít k přizpůsobení procesu přenosu. Zde jsou některé běžné volby:
-r: Rekurzivně kopíruje adresáře a jejich obsah.
-p: Zachovává oprávnění, časová razítka a režimy původního souboru.
-P: Určuje číslo portu pro připojení SSH.
-i: Určuje soubor soukromého klíče pro autentizaci SSH.
-C: Používá kompresi pro zrychlení přenosu dat.
-l: Omezuje šířku pásma používanou pro přenos (v kbit/s).
-v: Podrobný režim – zobrazuje ladicí zprávy během přenosu.
-o: Předává možnost klientovi SSH. Lze jej použít k deaktivaci přísné kontroly hostitelského klíče.
Zdroj
Zdroj označuje soubor nebo adresář, který chcete zkopírovat. Může se jednat o lokální cestu nebo vzdálenou cestu – záleží na kontextu.
Cíl
Cíl definuje umístění, kam chcete zdroj zkopírovat. Stejně jako zdroj, může to být lokální cesta nebo vzdálená cesta.
Příklady příkazů
#1. Zkopírování souboru z lokálního počítače na vzdálený server
scp /cesta/k/lokalnimu/souboru.txt uživatel@vzdalenýhost:/cesta/k/cíli/
/cesta/k/lokalnimu/souboru.txt: Toto je cesta k zdrojovému souboru, který chcete zkopírovat z lokálního počítače.
uživatel@vzdalenýhost: Nahraďte uživatele uživatelským jménem na vzdáleném serveru a vzdálenýhost názvem hostitele nebo IP adresou vzdáleného serveru.
/cesta/k/cíli/: Toto je cílová cesta na vzdáleném serveru, kam bude soubor zkopírován.
Příklad
V mém případě jsem pro přenos souboru zvolil jeden vzdálený server.
Uživatelské jméno vzdáleného hostitele – abhishekvarma
Adresa vzdáleného hostitele – 192.168.29.70
scp /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Při připojování ke vzdálenému počítači se vás zeptá na heslo. Zde jsem zvolil soubor zip pro kopírování.
Výstup
A výstup bude vypadat takto, pokud nedojde k chybě při připojení ke vzdálenému serveru.
sample.zip 100% 20KB 717.9KB/s 00:00
#2. Zkopírování souboru ze vzdáleného počítače na lokální počítač
scp uživatel@vzdalenýhost:/cesta/k/vzdalenemu/souboru.txt /cesta/k/lokalnimu/cíli/
Stejně jako výše, nahraďte adresu uživatele a vzdáleného hostitele.
Příklad
scp [email protected]:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop
Výstup
Toto je v mém případě pouze ukázkový výstup. Časové razítko se liší v závislosti na rychlosti připojení.
sample.zip 100% 20KB 51.2KB/s 00:00
#3. Rekurzivní kopírování adresáře
scp -r uživatel@vzdalenýhost:/cesta/k/vzdalenemu/adresari/ /cesta/k/lokalnimu/cíli/
Zde příznak ‚-r‘ říká SCP, aby kopírovalo adresáře rekurzivně (včetně podadresářů a jejich obsahu).
Příklad
scp -r /home/vboxuser/Desktop [email protected]:/Users/abhishekvarma/Desktop
Zde jsem zmínil celý adresář pro kopírování souborů.
Výstup
sample.zip 100% 20KB 1.0MB/s 00:00 Screenshot from 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. Kopírování souborů odpovídajících vzoru
scp /cesta/k/lokalnimu/*.txt uživatel@vzdalenýhost:/cesta/k/cíli/
*.txt – Toto je zástupný znak, který odpovídá všem souborům s příponou .txt v daném lokálním adresáři. Zdrojové a cílové cesty jsou stejné jako dříve.
Příklad
scp /home/vboxuser/Desktop/locfolder/*.png [email protected]:/Users/abhishekvarma/Desktop
Výstup
Zde jsem zkoušel s příponou .png.
Screenshot from 2023-08-13 21-45-23.png 100% 27KB 1.4MB/s 00:00 Screenshot from 2023-08-13 21-55-28.png 100% 24KB 1.7MB/s 00:00 Screenshot from 2023-08-13 22-04-03.png 100% 38KB 2.1MB/s 00:00
#5. Zachování atributů souboru
scp -p /cesta/k/lokalnimu/souboru.txt uživatel@vzdalenýhost:/cesta/k/cíli/
Zde příznak ‚-p‘ zachovává časy úprav, časy přístupu a režimy zdrojového souboru při kopírování.
Příklad
scp -p /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Výstup
sample.zip 100% 20KB 420.0KB/s 00:00
#6. Zadání jiného portu SSH
scp -P 22 /cesta/k/lokalnimu/souboru.txt uživatel@vzdalenýhost:/cesta/k/cíli/
Příznak ‚-P‘ určuje jiný port SSH (v tomto případě 22) pro připojení SCP. Můžete použít libovolný port.
Příklad
scp -P 22 /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Výstup
sample.zip 100% 20KB 1.2MB/s 00:00
#7. Kopírování s kompresí
scp -C /cesta/k/lokalnimu/souboru.txt uživatel@vzdalenýhost:/cesta/k/cíli/
Tento příznak ‚-C‘ umožňuje kompresi během přenosu, což potenciálně snižuje velikost přenášených dat. Zdrojová a cílová adresa jsou stejné, jak bylo vysvětleno dříve.
Příklad
scp -C /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Výstup
sample.zip 100% 20KB 985.8KB/s 00:00
#8. Podrobný výstup pro ladění
scp -v /cesta/k/lokalnimu/souboru.txt uživatel@vzdalenýhost:/cesta/k/cíli/
Tato volba ‚-v‘ aktivuje podrobný výstup, který poskytuje více informací během procesu přenosu.
Příklad
scp -v /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Výstup
Ukázkový výstup bude vypadat takto.
Executing: program /usr/bin/ssh host 192.168.29.70, user abhishekvarma, command scp -v -t /Users/abhishekvarma/Desktop OpenSSH_8.9p1 Ubuntu-3ubuntu0.3, OpenSSL 3.0.2 15 Mar 2022 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.29.70 [192.168.29.70] port 22. debug1: Connection established. debug1: identity file /root/.ssh/id_rsa type -1 debug1: identity file /root/.ssh/id_rsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa type -1 debug1: identity file /root/.ssh/id_ecdsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa_sk type -1 debug1: identity file /root/.ssh/id_ecdsa_sk-cert type -1
#9. Kopírování ze vzdáleného do lokálního s podrobným výstupem
scp -v uživatel@vzdalenýhost:/cesta/k/vzdalenemu/souboru.txt /cesta/k/lokalnimu/cíli/
Stejné vysvětlení jako v předchozím podrobném příkladu, s obrácenými rolemi lokálních a vzdálených umístění.
Příklad
scp -v [email protected]:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop
Výstup
Výstup bude vypadat takto.
Executing: program /usr/bin/ssh host 192.168.29.70, user abhishekvarma, command scp -v -f /Users/abhishekvarma/Desktop/sample.zip OpenSSH_8.9p1 Ubuntu-3ubuntu0.3, OpenSSL 3.0.2 15 Mar 2022 debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 21: Applying options for * debug1: Connecting to 192.168.29.70 [192.168.29.70] port 22. debug1: Connection established. debug1: identity file /root/.ssh/id_rsa type -1 debug1: identity file /root/.ssh/id_rsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa type -1 debug1: identity file /root/.ssh/id_ecdsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa_sk type -1 debug1: identity file /root/.ssh/id_ecdsa_sk-cert type -1
#10. Kopírování pomocí jiného klíče SSH
scp -i /cesta/k/soukromemu_klíci.pem /cesta/k/lokalnimu/souboru.txt uživatel@vzdalenýhost:/cesta/k/cíli/
Tento příznak „-i /cesta/k/soukromemu_klíci.pem“ specifikuje jiný soukromý klíč SSH pro autentizaci.
Příklad
scp -i /cesta/k/soukromemu_klíci.pem /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Výstup
Pokud máte soukromý klíč, můžete jej použít nebo můžete použít výchozí.
sample.zip 100% 20KB 1.1MB/s 00:00
#11. Zkopírování více souborů na vzdálený server
scp soubor1.txt soubor2.txt uživatel@vzdalenýhost:/cesta/k/cíli/
Tento příkaz zkopíruje soubor1.txt a soubor2.txt z lokálního adresáře do zadaného cíle na vzdáleném serveru.
Příklad
scp /home/vboxuser/Desktop/image.png /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Výstup
image.png 100% 39KB 1.4MB/s 00:00 sample.zip 100% 20KB 1.5MB/s 00:00
#12. Zkopírování vzdáleného souboru s jiným názvem
scp uživatel@vzdalenýhost:/cesta/k/vzdalenemu/souboru.txt /cesta/k/lokalnimu/novy_nazev_souboru.txt
Tento příkaz zkopíruje soubor.txt ze vzdáleného serveru do lokálního adresáře a přejmenuje jej na nový_nazev_souboru.txt.
Příklad
scp [email protected]:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop/novy_soubor.zip
Výstup
Při provádění tohoto příkazu by měly být staré a nové přípony souborů stejné.
sample.zip 100% 20KB 28.7KB/s 00:00
#13. Kopírování se specifickým limitem šířky pásma
scp -l 1000 /cesta/k/lokalnimu/souboru.txt uživatel@vzdalenýhost:/cesta/k/cíli/
Tento příznak ‚-l‘ určuje limit šířky pásma v kb/s (v tomto případě 1000 kb/s) pro přenos.
Příklad
scp -l 300 /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Výstup
sample.zip 100% 20KB 31.3KB/s 00:00
#14. Kopírování souborů a zachování symbolických odkazů
scp -rp /cesta/k/lokalnimu/zdroji/ uživatel@vzdalenýhost:/cesta/k/cíli/
Parametr ‚-p‘ zachovává atributy souboru a parametr -r rekurzivně kopíruje adresáře. Tento příkaz také zachová symbolické odkazy během kopírování.
Příklad
scp -rp /home/vboxuser/Desktop/image.png [email protected]:/Users/abhishekvarma/Desktop
Výstup
image.png 100% 39KB 1.8MB/s 00:00
#15. Podrobné kopírování souborů s kompresí
scp -vC