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

Představte si, že potřebujete přesunout data mezi servery běžící na operačním systému Linux. K dispozici je celá řada metod, jak toho dosáhnout, ale pokud je pro vás klíčová bezpečnost přenosu, možnosti se zúží. Nejjednodušším řešením je využití příkazu `scp`, známého jako secure copy, který umožňuje přenášet soubory bez obav o kompromitaci zabezpečení. V tomto textu si objasníme, jak bezpečně provádět přenos souborů za pomoci příkazu `scp` ve vašem linuxovém systému.

Přenos souborů s použitím příkazu `scp` v Linuxu (2023)

Co je příkaz `scp` v Linuxu?

Pokud jde o bezpečný přesun dat v síti, příkaz `scp` se stává neocenitelným pomocníkem. Je to zkratka pro Secure Copy Protocol (protokol pro bezpečné kopírování) a umožňuje transfer souborů a složek mezi dvěma systémy skrze šifrované SSH (Secure Shell) připojení. Díky SSH máte jistotu, že vaše data jsou chráněna šifrováním. Zjednodušeně řečeno, příkaz `scp` je zabezpečenou alternativou k příkazu `cp`, o kterém si můžete přečíst více v našem článku o linuxových příkazech terminálu.

Jak používat příkaz `scp`: Syntaxe a volby

Než se pustíme do samotného přesunu souborů pomocí `scp`, projděme si syntaxi a dostupné volby tohoto příkazu:

`scp` `` <[email protected]_ip_adresa:cesta/ke/zdrojovému/souboru> <[email protected]_ip_adresa:cílová/cesta>

Výklad syntaxe:

  • První část, <[email protected]_ip_adresa:cesta/ke/zdrojovému/souboru>, definuje ‚zdrojový‘ systém, odkud data/složky chcete zkopírovat.
  • Druhá část, <[email protected]_ip_adresa:cílová/cesta>, specifikuje ‚cílový‘ systém, kam data/složky chcete umístit.

Pokud vynecháte některý z výše uvedených parametrů, příkaz `scp` v Linuxu nejprve soubor vyhledá a následně jej zkopíruje lokálně. Některé z voleb, které se s příkazem používají, jsou:

Volby | Popis
——- | ——–
`-P` | Určuje port, ke kterému se připojit. Pokud se neudá, použije se standardně port 22.
`-p` | Zachovává původní časy úprav, časy přístupu a práva při kopírování.
`-r` | Rekurzivně zkopíruje celý adresář.
`-J` | Umožňuje připojení skrze zprostředkující server (jump host).
`-3` | Kopíruje soubory i do lokálního systému (při použití mezi dvěma vzdálenými servery).
`-4` | Vynutí `scp` používat pouze IPv4 adresy.
`-6` | Vynutí `scp` používat pouze IPv6 adresy.

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

Než se pustíme do používání příkazu `scp` v Linuxu, je nutné splnit pár předpokladů jak na zdrojovém, tak na cílovém systému:

  • Musí být nainstalován ssh.
  • Musíte mít přístup root nebo uživatele s právy sudo.

Kopírování souborů z lokálního hostitele do vzdáleného cíle

Pokud máte soubor, který potřebujete přenést z vašeho počítače do vzdáleného umístění, použijte následující syntaxi:

`scp` `` `` ``@``:``

Pokud vám výše uvedená syntaxe připadá složitá, následující příklad vše objasní:

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

V tomto příkladu:

  • `test.txt` je název souboru, který má být přesunut a nachází se v aktuálním adresáři lokálního systému.
  • `test` je uživatelské jméno na cílovém systému.
  • `139.144.11.105` je IP adresa cílového systému.
  • `/home/remote2/Documents/` je místo na cílovém systému, kam se soubor uloží.

Kopírování souborů ze vzdáleného hostitele do lokálního cíle

Pokud potřebujete přenést soubor ze vzdáleného serveru na váš počítač, použijte následující příkaz `scp` syntaxi:

`scp` `` ``@``:`` ``

Řekněme například, že chcete přesunout soubor s názvem `test.py` ze vzdáleného serveru, který používáte. Použijte tento příkaz:

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

V tomto příkladu:

  • `test` je uživatelské jméno na vzdáleném hostiteli.
  • `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 přesunu na váš počítač a uložení do domovského adresáře.

Přenos souborů z jednoho vzdáleného hostitele do druhého vzdáleného cíle

S příkazem `scp` můžete přesouvat soubory nejen mezi lokálním počítačem a vzdáleným serverem, ale také mezi dvěma vzdálenými systémy. Než ale začnete přesouvat soubory mezi dvěma vzdálenými servery, doporučuje se vygenerovat soukromý SSH klíč a veřejný SSH klíč na zdrojovém serveru a umístit kopii veřejného klíče na cílovém serveru.

Uživatelé si často stěžují na chybu „Ověření hostitelského klíče selhalo“ při přenosu souborů mezi dvěma vzdálenými systémy. Chcete-li tuto chybu obejít, použijte jako dodatečné zabezpečení SSH klíč. Způsob, jak to udělat, je popsán níže:

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

`ssh-keygen` `-t` `<šifrovací_algoritmus>`

2. Jako šifrovací algoritmus můžete použít `rsa`, což je nejběžnější, nebo jakýkoli jiný vámi preferovaný.

3. Dále budete dotázáni, kam chcete klíč uložit. Můžete si zvolit libovolné umístění, nebo nechat výchozí.

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

5. Poté zkopírujte veřejný klíč na cílový server pomocí tohoto příkazu. Díky tomu se pak můžete na cílový systém přihlásit pomocí SSH bez hesla.

`ssh-copy-id` ``@``

Poznámka: Přihlašování bez hesla funguje pouze pro uživatele, pro kterého jste klíč vygenerovali.

6. Jakmile klíč uložíte na vzdálený server, použijte pro přenos souborů mezi dvěma linuxovými servery následující `scp` syntaxi:

`scp` `` ``@``:`` ``@``:``

Řekněme, že chcete přesunout soubor `test.txt` z jednoho vzdáleného serveru na druhý, použijte tento příkaz:

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

V tomto příkladu:

  • `remote1` je uživatelské jméno na vzdáleném odesílateli.
  • `10.10.11.113` je IP adresa vzdáleného odesílatele.
  • `/home/test1/test.txt` je cesta k souboru, který se má odeslat.
  • `remote2` je uživatelské jméno na cílovém vzdáleném příjemci.
  • `10.11.27.111` je IP adresa vzdáleného příjemce.
  • `/home/remote2/Documents/test1.txt` je název a cesta k uložení přijatého souboru.

Přenos více souborů pomocí příkazu `scp`

Přenos souborů po jednom může být pro každého zdlouhavé. Místo toho můžete použít níže uvedenou syntaxi pro přesun více souborů pomocí `scp` v Linuxu:

`scp` `` `` ``@``:``

Například, pokud potřebujete odeslat čtyři soubory, `test1.txt`, `test2.py`, `test3.sh` a `test4.c`, na vzdálený server, použijte následující příkaz:

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

Pojďme si vysvětlit, jak tento příkaz funguje:

  • `-p 22` určuje připojení přes port 22.
  • `test1.txt`, `test2.py`, `test3.sh` a `test4.c` jsou názvy souborů k přenosu.
  • `remote_1` je uživatelské jméno na cílovém systému.
  • `10.10.11.113` je IP adresa příjemce.
  • `/home/remote_1/Documents` je cesta k uložení přijatých souborů.

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

`scp` `.` ``@``:``

Pokud například chcete odeslat všechny soubory `.py` na vzdálený server, použijte tento příkaz:

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

Zde platí:

  • `*.py` označuje všechny pythonovské soubory.
  • `remote1` je uživatelské jméno příjemce.
  • `10.10.11.113` je IP adresa příjemce.
  • `/home/remote_1/` je umístění pro uložení přijatých souborů.

Často kladené dotazy

Je přenos souborů pomocí `scp` bezpečný?

Secure Copy Protocol (scp) je protokol založený na technologii SSH, který využívá šifrování a ověřování pro výměnu souborů mezi dvěma servery. To zaručuje zabezpečení a integritu dat při přenosu 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 `scp` oproti SFTP je vyšší rychlost přenosu, což je výhodné zejména v sítích s vyšší latencí.

Bezpečný přenos souborů pomocí příkazu `scp` v Linuxu

Každý uživatel v určitém okamžiku potřebuje přenášet soubory přes síť. Příkaz `scp` usnadňuje bezpečný a efektivní přenos dat i v sítích s vysokou latencí. Znalost různých možností a syntaxe `scp` je rozhodně užitečná. Prohlédněte si i naše návody na přejmenování a mazání souborů v Linuxu pro rozšíření vašich schopností v práci se soubory. Doufáme, že vám tento text pomohl naučit se používat příkaz `scp` pro přenos dat na linuxových systémech. Pokud narazíte na nějaké problémy, dejte nám vědět v sekci komentářů.