Jak používat příkaz scp k bezpečnému přenosu souborů v systému Linux

Předpokládejme, že chcete přenášet nějaké soubory mezi servery v systému Linux. Existuje mnoho způsobů, jak můžete úkol splnit, ale pokud je vaší prioritou bezpečný přenos souborů, zbývá vám několik možností. Nejjednodušším řešením je použít příkaz scp nebo secure copy k přenosu souborů bez obav o zabezpečení. V tomto článku vysvětlíme, jak bezpečně používat přenos souborů pomocí příkazu scp na vašem systému Linux.

Přenos souborů pomocí příkazu scp v systému Linux (2023)

Co je příkaz scp v Linuxu

Pokud jde o přenos souborů přes zabezpečenou síť, může být velmi užitečný příkaz scp. Je to zkratka pro Secure Copy Protocol a přenáší soubory a adresáře mezi dvěma systémy přes SSH (Secure Shell) připojení. S ssh si můžete být jisti bezpečností svých souborů, protože jsou ve výchozím nastavení šifrovány. Jednodušeji řečeno, příkaz scp je bezpečnější verzí příkazu cp, o kterém si můžete přečíst vše v našem článku příkazy terminálu Linux.

Jak používat příkaz scp: Syntaxe a možnosti

Než budeme moci přenášet soubory přes scp, podívejme se na syntaxi a možnosti příkazu přímo zde:

scp <[email protected]_ip_adresa:cesta/ke/zdroji/souboru> <[email protected]_ip_address:target/path>

Pochopení syntaxe:

  • Za prvé, <[email protected]_ip_address:path/to/source/file> specifikuje ‚zdrojový‘ systém, odkud potřebujete přenést své soubory/adresáře.
  • Za druhé, <[email protected]_ip_address:target/path> určuje ‚cílový‘ systém, do kterého chcete přenést své soubory/adresáře.

Pokud ponecháte některý z výše uvedených parametrů, příkaz scp v Linuxu nejprve vyhledá soubor a poté soubor lokálně zkopíruje. Některé z možností spárování s příkazem jsou:

OptionsDestination-PSUdává, který port se má připojit k hostitelskému systému. Pokud je vynechán, použije standardně port 22.-pZachovává časy úprav, časy přístupu a režimy z původního souboru při kopírování do cílového systému.-rZkopíruje celý adresář do cílového systému rekurzivně.-JUžívá se k připojení zdrojový systém a cílový systém přes proxy systém (jump host).-3při použití tohoto příznaku zkopíruje soubory do cílového systému i do místního systému-4vynutí příkaz scp, aby používal pouze adresy IPv4.-6vynutí scp pro použití pouze adres IPv6.

Jak kopírovat soubory pomocí příkazu scp

Před použitím příkazu scp v systému Linux je třeba splnit některé předpoklady na hostitelském i cílovém systému:

  • ssh by měl být nainstalován
  • root přístup nebo jakýkoli uživatel s právy sudo

Zkopírujte soubory z místního hostitele do vzdáleného cíle

Pokud máte soubor, který potřebujete přenést z místního systému do vzdáleného cíle, musíte použít následující syntaxi:

scp @:

Pokud se výše uvedená syntaxe může zdát komplikovaná, příklad to vyjasní:

scp test.txt [email protected]:/home/remote2/Documents/

Ve výše uvedeném příkladu:

  • test.txt je název souboru, který má být přenesen, a je umístěn v aktuálním adresáři místního systému.
  • test je uživatelské jméno v cílovém systému.
  • 139.144.11.105 je IP adresa cílového systému.
  • /home/remote2/Documents/ je umístění v cílovém systému, kam se uloží přenesený soubor.

Zkopírujte soubory ze vzdáleného hostitele do místního cíle

Pokud potřebujete přenést soubor ze vzdáleného hostitele do místního počítače, použijte ve svém systému Linux následující syntaxi příkazu scp:

scp @:

Řekněme například, že potřebujete přenést soubor s názvem test.py ze vzdáleného serveru, na kterém pracujete, použijte tento příkaz:

scp [email protected]:/home/test/test1.py ~/test1.py

V tomto příkladu:

  • test je uživatelské jméno vzdáleného hostitele.
  • 10.10.11.113 je IP adresa vzdáleného hostitele.
  • /home/test/test1.py je cesta k souboru, který má být přenesen ze vzdáleného hostitele.
  • ~/test1.py je název souboru po jeho přenesení do místního počítače a uložení do domovského adresáře.

Přeneste soubory z jednoho vzdáleného hostitele do jiného vzdáleného cíle

Pomocí příkazu scp můžete nejen přenášet soubory mezi místním systémem a vzdáleným počítačem, ale také přenášet soubory mezi dvěma vzdálenými systémy. Než však budete moci přenášet soubory z jednoho vzdáleného systému do jiného vzdáleného systému, doporučuje se vygenerovat soukromý klíč ssh a veřejný klíč ssh ve zdrojovém systému a uložit kopii veřejného klíče v cílovém systému.

Obecně si uživatelé stěžují na chybu „Ověření klíče hostitele se nezdařilo“ při přenosu souborů mezi dvěma vzdálenými systémy. Chcete-li chybu obejít, použijte jako další opatření klíč ssh. Jak to můžete udělat, jsme vysvětlili zde:

1. Pomocí tohoto příkazu vygenerujte na zdrojovém serveru pár veřejného/soukromého klíče:

ssh-keygen -t <šifrovací_algoritmus>

2. Pro šifrovací algoritmy můžete použít „rsa“, což je nejběžněji používaný algoritmus, nebo jakýkoli jiný algoritmus dle vašeho výběru.

3. Poté budete požádáni o výběr umístění pro uložení klíče ssh. Můžete jej uložit na libovolné místo podle vašeho výběru nebo do výchozího umístění.

4. Jako přístupovou frázi můžete zadat libovolnou volbu nebo ji nechat prázdnou stisknutím klávesy Enter.

5. Poté zkopírujte veřejný klíč na cílový server pomocí příkazu níže. Díky tomu se můžete dokonce přihlásit do cílového systému bez hesla pomocí ssh.

ssh-copy-id @

Poznámka: metoda přihlašování bez hesla bude fungovat pouze pro uživatele, pro kterého jste vygenerovali klíč ssh.

6. Jakmile vytvoříte a uložíte klíč ssh na vzdáleném serveru, použijte tuto syntaxi příkazu scp k výměně souborů mezi dvěma vzdálenými systémy se systémem Linux:

scp @: @:

Řekněme, že potřebujete přenést soubor s názvem test.txt z jednoho vzdáleného hostitele do jiného vzdáleného přijímače, použijte příkaz:

scp [email protected]:/home/test1/test.txt [email protected]:/home/remote2/Documents/test1.txt

V tomto příkladu:

  • remote1 je jméno uživatele v hostiteli vzdáleného odesílatele
  • 10.10.11.113 je IP adresa hostitele vzdáleného odesílatele
  • /home/test1/test.txt je cesta k souboru, který má být odeslán
  • remote2 je jméno uživatele v cílovém vzdáleném přijímači
  • 10.11.27.111 je IP adresa cíle vzdáleného přijímače
  • /home/remote2/Documents/test1.txt je název a cesta k uložení souboru, který má být přijat.

Přeneste více souborů pomocí příkazu scp

Přenos více souborů po jednom může být pro každého zdlouhavý úkol. Místo toho můžete použít níže uvedenou syntaxi k výměně souborů pomocí příkazu scp v systému Linux:

scp @:

Například – Předpokládejme, že potřebujete odeslat čtyři soubory, včetně test1.txt, test2.py, test3.sh a test4.c, do vzdáleného přijímače, můžete použít následující příkaz:

scp -P 22 test1.txt test2.py test3.sh test4.c [email protected]:/home/remote_1/Documents

Pojďme pochopit, jak příkaz v příkladu funguje a co dělá:

  • -p 2222 se používá k určení připojení přes port 22
  • test1.txt test2.py test3.sh test4.c jsou názvy souborů, které mají být přeneseny
  • remote_1 je uživatelské jméno přijímajícího systému
  • 10.10.11.113 je IP adresa přijímače
  • /home/remote_1/Documents odkazuje na cestu k uložení přijatého souboru.

Zástupné znaky můžete dokonce použít k odeslání více souborů se stejnou příponou, jak je uvedeno níže:

scp . @:

Pokud například potřebujete odeslat všechny soubory .py na vzdálený server, použijte níže uvedený příkaz scp v terminálu Linux:

scp *.py [email protected]:/home/remote_1/

Tady,

  • *.py označuje všechny soubory pythonu
  • remote1 je uživatelské jméno příjemce
  • 10.10.11.113 je IP adresa přijímače
  • /home/remote_1/ je umístění pro uložení přijatého souboru

Často kladené otázky

Je přenos souborů SCP bezpečný?

Protokol Secure Copy nebo scp je protokol, který je založen na technologii SSH a používá šifrování a ověřování pro výměnu souborů mezi dvěma hostiteli. To zajišťuje úplné zabezpečení dat a integritu mezi dvěma hostiteli.

Je SCP bezpečnější než SFTP?

Protokoly SCP i SFTP jsou z hlediska zabezpečení na stejné úrovni. Hlavní výhodou použití scp oproti SFTP jsou vysoké přenosové rychlosti, které jsou užitečné zejména v sítích s vysokou latencí.

Bezpečný přenos souborů pomocí příkazu scp v systému Linux

V určitém okamžiku si každý uživatel potřebuje vyměňovat nějaké soubory přes síť. Příkaz scp usnadňuje bezpečný a efektivní přenos souborů i v síti s vysokou latencí. Znalost různých možností scp a syntaxe může být jistě také užitečná. Můžete se také podívat na naše průvodce, jak přejmenovat soubor v Linuxu a jak odstranit soubor v Linuxu, abyste dále zlepšili své dovednosti v oblasti správy souborů v operačním systému. Doufáme, že vám tento článek pomohl naučit se používat příkaz scp pro přenos souborů na počítačích se systémem Linux. Pokud při používání příkazu narazíte na nějaké problémy, dejte nám vědět v sekci komentářů.