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 83101×
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
Verze pro tisk
|
Příspívat do diskuze mohou pouze registrovaní uživatelé.
|
|

Vyhledávání software

Vyhledávání článků
28.11.2018 23:56 /František Kučera Prosincový sraz spolku OpenAlt se koná ve středu 5.12.2018 od 16:00 na adrese Zikova 1903/4, Praha 6. Tentokrát navštívíme organizaci CESNET. Na programu jsou dvě přednášky: Distribuované úložiště Ceph (Michal Strnad) a Plně šifrovaný disk na moderním systému (Ondřej Caletka). Následně se přesuneme do některé z nedalekých restaurací, kde budeme pokračovat v diskusi.
Komentářů: 1
12.11.2018 21:28 /Redakce Linuxsoft.cz 22. listopadu 2018 se koná v Praze na Karlově náměstí již pátý ročník konference s tématem Datová centra pro business, která nabídne odpovědi na aktuální a často řešené otázky: Jaké jsou aktuální trendy v oblasti datových center a jak je optimálně využít pro vlastní prospěch? Jak si zajistit odpovídající služby datových center? Podle jakých kritérií vybírat dodavatele služeb? Jak volit vhodné součásti infrastruktury při budování či rozšiřování vlastního datového centra? Jak efektivně datové centrum spravovat? Jak co nejlépe eliminovat možná rizika? apod. Příznivci LinuxSoftu mohou při registraci uplatnit kód LIN350, který jim přinese zvýhodněné vstupné s 50% slevou.
Přidat komentář
6.11.2018 2:04 /František Kučera Říjnový pražský sraz spolku OpenAlt se koná v listopadu – již tento čtvrtek – 8. 11. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma umění a technologie, IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář
4.10.2018 21:30 /Ondřej Čečák LinuxDays 2018 již tento víkend, registrace je otevřená.
Přidat komentář
18.9.2018 23:30 /František Kučera Zářijový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 20. 9. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář
9.9.2018 14:15 /Redakce Linuxsoft.cz 20.9.2018 proběhne v pražském Kongresovém centru Vavruška konference Mobilní řešení pro business.
Návštěvníci si vyslechnou mimo jiné přednášky na témata: Nejdůležitější aktuální trendy v oblasti mobilních technologií, správa a zabezpečení mobilních zařízení ve firmách, jak mobilně přistupovat k informačnímu systému firmy, kdy se vyplatí používat odolná mobilní zařízení nebo jak zabezpečit mobilní komunikaci.
Přidat komentář
12.8.2018 16:58 /František Kučera Srpnový pražský sraz spolku OpenAlt se koná ve čtvrtek – 16. 8. 2018 od 19:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát jsou tématem srazu databáze prezentaci svého projektu si pro nás připravil Standa Dzik. Dále bude prostor, abychom probrali nápady na využití IoT a sítě The Things Network, případně další témata.
Přidat komentář
16.7.2018 1:05 /František Kučera Červencový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 7. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát bude přednáška na téma: automatizační nástroj Ansible, kterou si připravil Martin Vicián.
Přidat komentář
Více ...
Přidat zprávičku
 Poslední diskuze
31.7.2023 14:13 /
Linda Graham iPhone Services
30.11.2022 9:32 /
Kyle McDermott Hosting download unavailable
13.12.2018 10:57 /
Jan Mareš Re: zavináč
2.12.2018 23:56 /
František Kučera Sraz
5.10.2018 17:12 /
Jakub Kuljovsky Re: Jaký kurz a software by jste doporučili pro začínajcího kodéra?
Více ...
|