Přenos souborů pomocí protokolu FTP je technologie, která je s námi již dlouhou dobu, ačkoli většina z nás si ji pamatuje jen matně. I přes svůj věk, FTP stále nachází své uplatnění. Ačkoli moderní protokoly nabízejí vyšší zabezpečení, občas je nezbytné sáhnout i po tomto starším řešení. V tomto článku si ukážeme, jak na to.
Pozor: Vyhněte se FTP přes internet
Než začneme, je důležité si ujasnit jednu věc. Protokol FTP (File Transfer Protocol) má svůj původ v raných 70. letech a při jeho návrhu se na bezpečnost vůbec nemyslelo. Nepoužívá žádné šifrování. Veškeré přihlašovací údaje, včetně uživatelského jména a hesla, i data, která stahujete nebo odesíláte, jsou přenášeny v nešifrované podobě. Kdokoli s přístupem k síti může tak snadno odhalit vaše citlivé informace. Nicméně, FTP má stále i dnes své opodstatnění.
Pokud přenášíte data v rámci vaší domácí nebo firemní sítě, je relativně bezpečné FTP používat – pokud tedy nikdo ve vaší síti neprovádí odposlech. Jestliže přenášená data nejsou důvěrná, je používání FTP v rámci vaší lokální sítě v pořádku. Linux nabízí standardní nástroj pro příkazovou řádku pro manipulaci se soubory právě v takových případech.
Rozhodně se ale nedoporučuje používat příkaz ftp pro přenos dat přes internet. V takovém případě je mnohem vhodnější použít sftp, což je nástroj pro příkazovou řádku, který využívá bezpečný protokol SSH File Transfer Protocol. Oba tyto nástroje si v tomto článku představíme.
Abyste pochopili, proč byste se měli vyhnout používání FTP přes internet, podívejte se na následující obrázek. Uvidíte heslo pro FTP, které je zobrazeno v nešifrovaném textu. Každý, kdo má přístup k vaší síti nebo komunikaci mezi vámi a FTP serverem, tak může jednoduše získat vaše heslo, v tomto případě „MySecretPassword“.
Bez šifrování hrozí i riziko manipulace se soubory, které odesíláte nebo stahujete během přenosu.
Příkaz ftp
Pokud máte platný účet na FTP serveru, můžete se k němu připojit pomocí následujícího příkazu. Ve všech následujících příkladech nahraďte IP adresu konkrétní IP adresou FTP serveru, ke kterému se chcete připojit.
ftp 192.168.4.25
Důležité upozornění: Příkaz ftp používejte jen pro připojení k serverům, kterým důvěřujete ve vaší lokální síti. Pro přenos souborů přes internet je vhodnější použít příkaz sftp, který si představíme níže.
FTP server odpoví uvítací zprávou, která se může u různých serverů lišit. Poté se vás server zeptá na uživatelské jméno účtu, ke kterému se připojujete.
Všimněte si, že se zobrazí IP adresa serveru, ke kterému se připojujete, a také vaše uživatelské jméno v Linuxu. Pokud je vaše uživatelské jméno na FTP serveru stejné jako v Linuxu, stačí stisknout klávesu Enter. V opačném případě zadejte jméno uživatele pro FTP server a stiskněte Enter.
Přihlášení k FTP serveru
Systém vás vyzve k zadání hesla pro FTP server. Zadejte své heslo a stiskněte Enter. Heslo se během zadávání nezobrazí na obrazovce. Po ověření kombinace uživatelského jména a hesla se úspěšně přihlásíte k FTP serveru.
Zobrazí se výzva ftp>.
Prohlížení a stahování souborů
Nejprve se budete chtít podívat na seznam souborů, které se na FTP serveru nacházejí. K tomu slouží příkaz ls. V našem případě se uživatel dozví, že na serveru existuje soubor gc.c, který si chce stáhnout do svého lokálního počítače. V terminologii FTP je lokální počítač označován jako „místní počítač“.
Pro stažení (neboli „získání“) souboru slouží příkaz get. Uživatel tedy zadá příkaz get gc.c, tedy get, mezeru a název souboru, který chce stáhnout.
FTP server odpoví přenesením souboru do lokálního počítače a potvrdí, že přenos proběhl. Také se zobrazí velikost souboru a doba přenosu.
ls
get gc.c
Pro stažení více souborů najednou použijte příkaz mget (multiple get). Před stažením každého souboru budete dotázáni, zda si ho skutečně přejete stáhnout. Odpovíte stisknutím „y“ pro ano a „n“ pro ne.
Toto by bylo značně zdlouhavé pro větší množství souborů. Z toho důvodu jsou soubory na FTP serverech často ukládány v komprimovaných archivech tar.gz nebo tar.bz2.
mget *.c
Nahrávání souborů na FTP server
V závislosti na oprávněních, které má váš FTP účet, můžete mít možnost nahrávat (nebo „ukládat“) soubory na server. Pro nahrání souboru použijte příkaz put. V našem příkladu uživatel odesílá soubor Songs.tar.gz na FTP server.
put Songs.tar.gz
Jak jste nejspíše očekávali, existuje i příkaz pro odeslání více souborů najednou na FTP server. Jmenuje se mput (multiple put). Stejně jako u příkazu mget, i zde budete pro každý soubor dotázáni na potvrzení „y“ nebo „n“ před odesláním.
Stejná argumentace o ukládání sad souborů do archivů tar platí i při nahrávání souborů, stejně jako při jejich stahování. Náš uživatel nahrává několik souborů s koncovkou „.odt“ pomocí následujícího příkazu:
mput *.odt
Vytváření a změna adresářů
Pokud vám to váš FTP účet dovoluje, můžete vytvářet nové adresáře. Příkaz pro vytvoření adresáře je mkdir. Každý adresář, který vytvoříte pomocí mkdir, bude vytvořen na FTP serveru, ne na vašem lokálním počítači.
Pro změnu adresáře na FTP serveru slouží příkaz cd. Po použití cd se výzva ftp> nezmění tak, aby ukazovala na váš nový adresář. Aktuální adresář si můžete ověřit pomocí příkazu pwd (print working directory – zobrazit pracovní adresář).
Náš uživatel vytvoří adresář s názvem music, přesune se do něj, pomocí pwd si ověří, kde se nachází, a následně do tohoto adresáře nahraje soubor.
mkdir music
cd music
pwd
put songs.tar.gz
Pro rychlý přesun do nadřazeného adresáře aktuálního adresáře použijte příkaz cdup.
cdup
Přístup k lokálnímu počítači
Pro změnu adresáře na vašem lokálním počítači můžete v příkazové řádce ftp> použít příkaz lcd. Může se ale stát, že se ztratíte v tom, kde se ve vašem lokálním souborovém systému nacházíte. Pohodlnější způsob, jak se dostat do lokálního souborového systému, je pomocí příkazu !.
Příkaz ! otevře shell okno ve vašem lokálním počítači. V tomto prostředí můžete dělat cokoliv, co byste mohli dělat ve standardním okně terminálu. Když zadáte exit, vrátíte se zpět do výzvy ftp>.
Náš uživatel použil ! a vstoupil do shell okna v lokálním počítači. Zadáním příkazu ls si prohlédl soubory v daném adresáři a poté zadal exit pro návrat do výzvy ftp>.
!
ls
exit
Přejmenování souborů
Pro přejmenování souborů na FTP serveru slouží příkaz rename. V našem případě uživatel přejmenuje soubor pomocí rename a pak pomocí příkazu ls zobrazí soubory v daném adresáři.
rename songs.tar.gz rock_songs.tar.gz
ls
Mazání souborů
Pro odstranění souborů na FTP serveru použijte příkaz delete. Pokud chcete smazat více souborů najednou, použijte příkaz mdelete. Budete dotázáni na potvrzení „y“ nebo „n“ pro smazání každého souboru.
Náš FTP uživatel si nejprve zobrazí seznam souborů, aby si ověřil jejich jména, a pak vybere jeden ze souborů, který chce smazat. Poté se rozhodne smazat všechny soubory s danou koncovkou.
ls
delete gc.o
mdelete *.o
Použití příkazu sftp
Čtenáři, kteří se orientují v IP adresách, si jistě všimli, že adresa 192.168 použitá ve výše uvedených příkladech pro FTP server je interní, neboli soukromá IP adresa. Jak jsme varovali na začátku tohoto článku, příkaz ftp by se měl používat pouze v rámci interní sítě.
Pokud se chcete připojit k vzdálenému nebo veřejnému FTP serveru, je nutné použít příkaz sftp. Náš uživatel se připojí k SFTP účtu s názvem demo na veřejně dostupném FTP serveru na adrese test.trebex.net.
Po připojení systém informuje o navázání spojení a upozorní na nemožnost ověření autenticity hostitele. To je normální stav při prvním připojování k novému hostiteli. Uživatel stiskne „y“ pro přijetí připojení.
Vzhledem k tomu, že uživatelské jméno (demo) bylo zadáno v příkazové řádce, není uživatel vyzván k jeho zadání. Systém žádá pouze o zadání hesla. Po zadání, ověření a přijetí hesla se objeví výzva sftp>.
sftp [email protected]
Příkazy FTP, které jsme si popsali výše, budou v relaci SFTP fungovat stejným způsobem s následujícími výjimkami.
Pro smazání souboru použijte rm (FTP používá delete).
Pro odstranění více souborů použijte rm (FTP používá mdelete).
Pro přesun do nadřazeného adresáře použijte cd .. (FTP používá cdup).
Náš uživatel použil několik příkazů ve své SFTP relaci. Použil ls pro zobrazení souborů a cd pro přesun do adresáře pub. Dále použil pwd pro vypsání pracovního adresáře.
Ve světě Linuxu existují i další způsoby přenosu souborů, zejména scp (secure copy). My jsme se ale zaměřili na FTP a SFTP. Pokud je použijete v relevantních situacích, tyto dva příkazy vám dobře poslouží pro vaše potřeby při ukládání a stahování souborů.