LINUXSOFT.cz Přeskoč levou lištu
Uživatel: Heslo:  
   CZUKPL

> Linux v příkazech - ssh, rsync

Toto je první článek v naší sérii o praktickém použití příkazové řádky věnovaný síťové komunikaci.

14.7.2004 13:00 | Jan Houštěk | Články autora | přečteno 71851×

SSH

Začneme s v Linuxu a linuxových systémech obecně velmi rozšířeným nástrojem jménem ssh. Jedná se o náhradu rsh (remote shell), od kterého se již dnes právě díky ssh téměř zcela ustoupilo. Nejznámější a nejrozšířenější implementací je OpenSSH pocházející z OpenBSD, na tuto implementaci se v tomto článku zaměříme (jiné implementace mají odlišnou syntax a také trochu jiné možnosti a schopnosti).

SSH znamená secure shell, ovšem kromě šifrování a bohatého výběru autentizačních mechanismů přináší další řadu možností jako např. forwarding TCP spojení, tunelování X11, kompresi a další.

Aby bylo možné ssh použít, musí na straně serveru běžet sshd. Konfigurací démona se zabývat nebudeme, předpokládejme, že na stroji ssh.linuxsoft.cz je zprovozněn. Uživatel bfu se do interaktivního shellu na tento stroj přihlásí asi takto:

bfu@client:~$ ssh bfu@ssh.linuxsoft.cz
The authenticity of host 'ssh.linuxsoft.cz (82.208.29.34)' can't be
established.
RSA key fingerprint is 10:17:47:bc:08:98:a7:db:7e:17:3a:dc:3a:03:73:43.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'ssh.linuxsoft.cz,82.208.29.34' (RSA) to the
list of known hosts.
bfu@ssh.linuxsoft.cz's password: ********
bfu@linuxsoft:~$

Hláška o RSA klíči se objevila, protože klient nebyl schopný ověřit identitu serveru a tudíž nelze nijak vyloučit, že opice sedí na drátě (MITM neboli monkey-in-the-middle) a vydává se za server. Tuto hlášku byste neměli ignorovat, ale poskytnutý fingerprint ověřit. Na cesty doporučuji fingerprinty v peněžence na kartičce velikosti kreditní karty, z druhé strany může být seznam jednorázových hesel :-)

Ověřené klíče se obvykle ukládají do $HOME/.ssh/known_hosts, nebo je může administrátor uložit do /etc/ssh/ssh_known_hosts. Pokud bychom chtěli vidět fingerprinty těchto uložených klíčů (např. pro přípravu zmíněné kartičky), použijeme např. příkaz

bfu@client:~$ ssh-keygen -l -f .ssh/known_hosts
2048 10:17:47:bc:08:98:a7:db:7e:17:3a:dc:3a:03:73:43 ssh.linuxsoft.cz
1024 a9:1d:8a:74:87:30:a7:41:a8:26:7e:88:e6:42:e2:6b root.cz

ssh-keygen je nástroj určený pro výrobu a manipulaci s ssh klíči. Volba -l slouží právě k vygenerování fingerprintů, -f udává soubor s klíči.

Máme tedy ověřenu identitu serveru, pojďme se podívat, co dalšího nám ssh nabízí. Např.

ssh -1 -C -X -p 2222 ssh.linuxsoft.cz

stále vede k získání interaktivního shellu. Použité volby jsou ortogonální, -1 vynutí použití protokolu verze 1. Dnes se již většinou jako výchozí používá protokol 2, který je bezpečnější a má větší možnosti (forwarding portů, subsystémy). Protokol 1 ocení ti, kdo potřebují interaktivní shell používat na pomalých linkách a/nebo linkách s dlouhou odezvou. V kombinaci s kratším klíčem (doporučuji 768 bitů) je např. při použití GPRS spojení shell subjektivně podstatně "živější".

-C slouží k zapnutí komprese, což zase uvítají ti, kdo přes ssh chtějí na pomalejších linkách přenášet větší množství dat a/nebo mají počítanou linku. Na rychlých linkách má tato volba smysl jen v případě, že server i klient zvládnou datový tok v reálném čase (de)šifrovat a současně (de)komprimovat.

Volba -X slouží k protunelování X11 spojení. Běží-li na straně klienta X server, je možné v získaném vzdáleném shellu spouštět i X11 aplikace, jejich vstup a výstup bude pomocí ssh tunelován a zobrazen na lokálním X serveru.

A konečně volba -p umožní zadat jiný port než standardní 22/tcp. To se může hodit k připojení na servery za firewallem, nebo servery spuštěné neprivilegovaným uživatelem.

Vynechání uživatelského jména je v pořádku, v takovém případě se použije login lokálního uživatele. Spuštěním shellu možnosti ssh nekončí. Zjistit čas na vzdaleném serveru můžeme třeba takto:

bfu@client:~$ ssh ssh.linuxsoft.cz 'date'
Fri Jul  1 06:54:11 CEST 2004

Uvozovky jsou v tomto případě zbytečné, ovšem je dobré si na ně zvyknout, u příkazů s parametry už totiž nutné jsou. Jak je vidět, vede toto ke spuštění příkazu na vzdáleném serveru, přičemž standardní výstup je přes ssh přesměrován na klienta. A nejen to, standardní vstup je zase přesměrován na server, zkopírovat lokální soubor secret_file přes ssh na server můžeme např. takto:

ssh ssh.linuxsoft.cz 'cat > secret_file_copy' < secret_file

V případě celého adresáře použijeme stejným způsobem tar:

tar cf - some_dir | ssh ssh.linuxsoft.cz 'tar xf -'

Pro přenos souborů přes ssh máme ovšem k dispozici mnohem komfortnější a silnější nástroje, jmenovitě rsync, scp či sftp. Princip fungování je ovšem stejný, jako v předchozím případě.

Ukažme si ještě jednu vlastnost ssh, kterou je přesměrování portů. Nechť např. na stroji pop.host.com je provozována služba pop3, pomocí které si chcete na klientskou stanici stáhnout poštu. Z nějakého důvodu (firewall, bezpečnost, anonymita apod.) to ale nechcete provádět přímo z klienta, ale z ssh.linuxsoft.cz. Použijete tedy příkaz

ssh -N -L 11000:pop.host.com:110 ssh.linuxsoft.cz

Po zadání hesla se pak můžete pop3 klientem připojit na lokální port 11000/tcp, toto spojení bude na port 110/tcp serveru pop.host.com navázáno z ssh.linuxsoft.cz, mezi klientem a ssh.linuxsoft.cz je komunikace jako obvykle tunelovaná a šifrovaná pomocí ssh. Volba -N způsobí, že nedojde ke spuštění příkazu ani interaktivního shellu, není nutné ji použít (v takovém případě se ssh chová jako obvykle, tj. při absenci příkazu otevře interaktivní shell).

Lze provést i přesměrování v opačném směru, pomocí -R. Provozujete-li např. na lokálním stroji nacházejícím se za firewallem nebo NATem http server, který chcete (dočasně) zpřístupnit z internetu prostřednictvím ssh.linuxsoft.cz, provedete to příkazem (z klienta, kde běží zmíněný http server)

ssh -N -R 8080:localhost:80 ssh.linuxsoft.cz

Nyní se lze připojit na port 8080 serveru ssh.linuxsoft.cz (např zadáním http://ssh.linuxsoft.cz:8080/ do prohlížeče), toto spojení je přes ssh forwardováno na port 80 na klientské stanici. Je možné localhost nahradit jménem nebo IP adresou jiného stroje v lokální síti. Toto zpřístupnění lokálních služeb z Internetu navíc nelze nijak detekovat, z pohledu místního firewallu se jedná o odchozí TCP spojení na ssh server a z pohledu zpřístupněných služeb zase o přístupy z lokální stanice (na které spouštíme ssh klient).

Rsync

Rsync je poměrně sofistikovaný nástroj pro přenos souborů. Mezi jeho hlavní výhody patří efektivita, vysoká konfigurovatelnost a kontrola integrity přenášených dat je přímo součástí protokolu. Je to jeden z nejrozšířenějších nástrojů používaných pro synchronizaci dat mezi hlavním zdrojem a mirrory, umí totiž přenášet pouze nové soubory a u existujících pouze jejich změněné části.

Syntax je jednoduchá, rsync vždy voláme podle následujícího schématu:

rsync {případné předvolby} {zdroj nebo více zdrojů} {cíl}

Zdroj a cíl mohou mít několik tvarů. Nejdůležitější je rozlišení na lokální a vzdálená umístění. Lokální umístění se zapisují stejně jako např. v případě cp. Např. všechny soubory jpg z aktuálního adresáře do adresáře /home/bfu/photo zkopírujeme příkazem

bfu@linux:~$ rsync *.jpg /home/bfu/photo

Chceme-li kopírovat celé adresáře, je nutno použít parametr -r. S parametrem -v zase rsync rsync ukazuje soubory, které kopíruje, a s parametrem --progress navíc u každého zobrazí i průběh, rychlost a čas (to má smysl zejména u větších souborů).

bfu@linux:~$ rsync -rv --progress /share/linux/MDK-amd64 /tmp/to_burn
building file list ... 
6 files to consider
created directory /tmp/to_burn
MDK-amd64/Mandrakelinux10.0-CD1.amd64.iso
   726958080 100%    6.13MB/s    0:01:53
MDK-amd64/Mandrakelinux10.0-CD2.amd64.iso
   727709696 100%    6.15MB/s    0:01:52
MDK-amd64/Mandrakelinux10.0-CD3.amd64.iso
   727904256 100%    5.85MB/s    0:01:58
MDK-amd64/Mandrakelinux10.0-CD4.amd64.iso
   724908032 100%    5.74MB/s    0:02:00
MDK-amd64/Mandrakelinux10.0-amd64.md5sum
         264 100%    0.00kB/s    0:00:00
wrote 2907835604 bytes  read 100 bytes  6246693.24 bytes/sec
total size is 2907480328  speedup is 1.00

Pozor na zápis adresářů ve zdrojích. V případě, že za jméno adresáře napíšeme lomítko, je přenesen jeho obsah, nikoliv adresář samotný. Následující dva příkazy vedou ke stejnému výsledku, tj. zkopírování ISO obrazů do adresáře /tmp/to_burn/tmp, zatímco původní příkaz vytvořil adresář /tmp/to_burn/MDK-amd64

rsync /share/linux/MDK-amd64/ /tmp/to_burn
rsync /share/linux/MDK-amd64/* /tmp/to_burn

Pro co možná nejidentičtější kopii lze použít parametr -a. Je to zkratka za -rlptgoD. Parametr -r již známe, -l znamená zachování symlinků, funkce ostatních je dohledatelná v manuálové stránce.

Rsync se ovšem většinou používá nikoliv jako "chytřejší" cp, ale pro přenos souborů po síti. Cílové nebo lokální umístění může mít jeden ze dvou následujících tvarů

rsync -a rsync://ftp.debian.org/debian /ftproot/mirror/ftp.debian.org
rsync -a www bfu@remote.machine.com:archive

První příkaz přenese Debianí FTP archiv na lokální stroj do určeného adresáře. Druhý pak zkopíruje adresář www do adresáře archive v domovském adresáři uživatele bfu na stroji remote.machine.com.

Rozdíl je v použitém protokolu. Příklad s Debianem používá vlastní rsync protokol, který je tak trochu podobný FTP. Na straně serveru musí být tato služba zprovozněna a patřičně nakonfigurována (tím se zde zabývat nebudeme), může vyžadovat autentizaci nebo umožnit anonymní přístup.

Řada velkých archivů software tuto službu provozuje kvůli snadné synchronizaci s mirrory, někdy je dostupná i běžným uživatelům – v takovém případě je při stahování např. ISO obrazů vhodné dát programu rsync přednost před FTP či HTTP. Použijeme přitom většinou také volbu --partial, která způsobí, že při předčasném přerušení není částečně stažený soubor smazán a stahování lze navázat.

bfu@linux:~$ rsync -v --progress --partial \
rsync://debian.sh.cvut.cz/debian-cd/current/
iso/i386/debian-30r2-i386-binary-1.iso .

Welcome to SiLiCONN HiLL MiRROR SiTE
Use: ftp.sh.cvut.cz::ftp/

Server name: ftp.sh.cvut.cz
Server IP: 147.32.127.222
CPU and RAM: Intel Celeron 800MHz, 384MB
Connection: 100 MBit
Location: Europe, Czech Republic, Prague
Contact: admin@ftp.sh.cvut.cz

debian-30r2-i386-binary-1.iso
    10829824   1%    5.67MB/s    0:01:43

Pro nás užitečnější bude ale především druhý zápis s dvojtečkou. V takovém případě je přenos realizován přes službu vzdáleného shellu, dnes tedy většinou ssh. Některé distribuce v defaultní konfiguraci zkouší používat zastaralý rsh, k použití ssh pak rsync přimějeme parametrem -e ssh. Na straně serveru musí běžet sshd a musí být nainstalován rsync.

Následující příkaz přenese všechny PDF dokumenty z domovského adresáře vzdáleného serveru do aktuálního lokálního adresáře. Příklad předpokládá, že vzdálený uživatel je stejný jako lokálně přihlášený.

rsync remote.machine.com:*.pdf .

Lokální adresář data můžeme se stejnojmenným adresářem v domovském adresáři na vzdáleném serveru synchronizovat příkazem

rsync -a --delete data remote.machine.com:

Parametr --delete způsobí smazání těch souborů a adresářů v adresáři data na vzdáleném serveru, které neexistují lokálně. Takto je možné např. synchronizovat data mezi notebookem a pracovní stanicí. Protože jsou přenášeny jen změny a nové soubory, je celá operace většinou rychlá i v případě, že celkový objem adresáře je značný.

Ke komfortnímu používání rsync a ssh je užitečné používat ssh klíče a případně ssh agenta, aby při každém připojení nebylo nutné zadávat heslo. To ale přesahuje rámec tohoto článku.

Rsync je opravdu mocný nástroj, práce s ním je efektivní a díky ssh také bezpečná, navíc je možné ho použít prakticky kdekoliv (jak již bylo zmíněno, stačí nainstalovaný rsync a ssh služba). Osobně ho preferuji před podstatně méně schopným scp i před méně bezpečnými a méně spolehlivými službami jako FTP. Věřím, že si ho také oblíbíte!

Zdroje

  • man ssh
  • man rsync

Verze pro tisk

pridej.cz

 

DISKUZE

Doplnění - scp 14.7.2004 13:36 o.k.
L Re: Doplnění - scp 14.7.2004 13:56 Jan Houštěk
SSH Gatewayports 22.8.2004 13:39 Jan Houštěk
L Re: SSH Gatewayports 6.9.2004 05:16 Jan Houštěk
rsunc --partial na lokale 7.7.2006 16:16 Jakub Vysoky




Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

15.5.2017 23:50 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt, který se bude konat ve čtvrtek 18. května od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).
Přidat komentář

12.5.2017 16:42 /Honza Javorek
PyCon CZ, česká konference o programovacím jazyce Python, se po dvou úspěšných ročnících v Brně bude letos konat v Praze, a to 8. až 10. června. Na konferenci letos zavítá např. i Armin Ronacher, známý především jako autor frameworku Flask, šablon Jinja2/Twig, a dalších projektů. Těšit se můžete na přednášky o datové analytice, tvorbě webu, testování, tvorbě API, učení a mentorování programování, přednášky o rozvoji komunity, o použití Pythonu ve vědě nebo k ovládání nejrůznějších zařízení (MicroPython). Na vlastní prsty si můžete na workshopech vyzkoušet postavit Pythonem ovládaného robota, naučit se učit šestileté děti programovat, efektivně testovat nebo si v Pythonu pohrát s kartografickým materiálem. Kupujte lístky, dokud jsou.
Přidat komentář

2.5.2017 9:20 /Eva Rázgová
Putovní konference československé Drupal komunity "DrupalCamp Československo" se tentokrát koná 27. 5.2017 na VUT FIT v Brně. Můžete načerpat a vyměnit si zkušenosti z oblasti Drupalu 7 a 8, UX, SEO, managementu týmového vývoje, využití Dockeru pro Drupal a dalších. Vítáni jsou nováčci i experti. Akci pořádají Slovenská Drupal Asociácia a česká Asociace pro Drupal. Registrace na webu .
Přidat komentář

1.5.2017 20:31 /Pavel `Goldenfish' Kysilka
PR: 25.5.2017 proběhne v Praze konference na téma Firemní informační systémy. Hlavními tématy jsou: Informační systémy s vlastní inteligencí, efektivní práce s dokumenty, mobilní přístup k datům nebo využívání cloudu.
Přidat komentář

15.4.2017 15:20 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě IoT a radiokomunikace? Přijď na sraz spolku OpenAlt, který se bude konat ve středu 19. dubna od 18:30 v Šenkovně (Sokolská 60, Praha 2).
Přidat komentář

5.3.2017 19:12 /Redakce Linuxsoft.cz
PR: 23. března proběhne v Praze konferenci na téma Cloud computing v praxi. Hlavními tématy jsou: Nejžhavější trendy v oblasti cloudu a cloudových řešení, Moderní cloudové služby, Infrastruktura současných cloudů, Efektivní využití cloudu, Nástrahy cloudových řešení a jak se jim vyhnout.
Přidat komentář

27.2.2017 22:12 /František Kučera
Pozvánka na 137. sraz OpenAlt – Praha: Tentokrát jsme si pro vás připravili neobvyklou akci. Ve středu 1.3. v 17:30 nás přivítá sdružení CZ.NIC ve svých prostorách v Milešovské ulici číslo 5 na Praze 3, kde si pro nás připravili krátkou prezentaci jejich činnosti. Následně navštívíme jejich datacentrum pod Žižkovskou věží. Provedou nás prostory, které jsou běžnému smrtelníkovi nedostupné!
Po ukončení prohlídky se všchni odebereme do hostince U vodoucha, Jagelonská 21, Praha 3 pochutnat si na některém z vybraných piv či dát si něco na zub. Rezervaci máme od 19:30, heslo je OpenAlt.
Ale pozor! Do prostor datového centra máme omezený přístup, dostane se tam pouze 10 lidí! Takže kdo přijde dříve, ten má přednost, a občanky s sebou! Kdo nebude chtít na prohlídku datového centra, může se pomalu přesunout do hostince U vodoucha a u nepřeberné nabídky piv počkat na ostatní.
Přidat komentář

18.1.2017 0:49 /František Kučera
Členové a příznivci spolku OpenAlt se pravidelně schází v Praze a Brně. Fotky z pražských srazů za uplynulý rok si můžete prohlédnout na stránkách spolku. Příští sraz se koná už 19. ledna – tentokrát je tématem ergonomie ovládání počítače – tzn. klávesnice, myši a další zařízení. Také budete mít příležitost si prohlédnout pražský hackerspace Brmlab.
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

15.6.2017 9:34 / Ondřej Havlas
php,

10.6.2017 10:39 / Temple
sell home for cash

11.5.2017 23:32 / lelo
Re: Problém se správcem balíčků

11.5.2017 5:45 / davd mašek
Re: Problém se správcem balíčků

10.5.2017 22:54 / lelo
Re: Problém se správcem balíčků

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2017) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze