Hrátky z řádky: používáme ssh

Petr Macek 5. 5. 2008

Vzdálené ovládání počítače pomocí ssh je v unixovém světě jistě nejpoužívanější způsob. Jeho výhodou je nenáročnost na zdroje a především rozšířenost. Dnes si ukážeme, jak se takové ssh správně používá, jak se přihlašovat pomocí klíčů a také třeba to, jak použít ssh k zálohování dat ze serveru.

Kdo pracuje s linux/unix systémy, určitě denně používá ssh. Trochu z jeho historie – ssh vzniklo v roce 1995 jako náhrada starších programů telnet, rlogin, rsh, … Ty už v té době přestaly dostačovat – chybělo šifrování, kontrola integrity dat. Na Helsinské univerzitě vypracoval Tatu Ylönen protokol ssh verze 1. Pak se to trochu zkomplikovalo, protože autor protokol uzavřel. Jenže ssh už v té době používala spousta lidí, a proto vzniklo openSSH, které asi používá většina z nás. Za nějakou dobu vznikla verze 2, která se používá dnes. Ssh je tedy náhradou výše zmíněných programů, ale nabízí i několik věcí navíc, např. volitelná komprese, tunely,… Ssh dále využívají třeba protokoly scp a sftp. Ssh pracuje na TCP portu 22.

Dnes se podíváme na základní věci – přihlašování heslem, klíčem, rychlé přihlašování, vykonání příkazu na vzdáleném stroji a jak toho využít. Příště si pak povíme o konfiguraci sshd, scp, sftp, jak spolupracovat s komerčním SSH a další věci.

Dnes se budeme věnovat pouze openssh a verzi 2, pokud budeme používat klíče, bude se jednat o dsa.

Jakou verzi používáme, můžeme zjistit dvěma způsoby:

[pm@minastirith pm]$ ssh -V
OpenSSH_4.2p1 FreeBSD-20050903, OpenSSL 0.9.7e-p1 25 Oct 2004

[pm@minastirith pm]$ telnet www.mujserver.cz 22
Trying 195.18.214.5
Connected to www.mujserver.cz.
Escape character is '^]'.
SSH-2.0-OpenSSH_4.5p1 FreeBSD-20061110

Běžné přihlášení ( ssh www.mujserver.cz nebo ssh franta@www.mujserver.cz) zná asi každý. Nikoho ale asi nebaví psát takhle dlouhý příkaz častěji. Pomoc je snadná. Ve svém domovském adresáři máte (nebo si jej vytvořte) adresář .ssh. Práva na něj a jeho obsah by měl mít jen jeho vlastník a nikdo jiný. Jsou v něm uložené důležité údaje. Ssh např. při přihlašování klíčem vlastnictví souborů ověřuje a odmítne spojení, pokud nejste vlastník souborů:

pm@pm-desktop:~$ ls -al .ssh/
drwx------  2 pm pm   4096 2008-04-17 16:03 .
drwxr-xr-x 60 pm pm   4096 2008-04-29 15:46 ..
-rw-------  1 pm pm   2402 2008-04-17 16:03 config
-rw-------  1 pm pm    668 2004-12-09 16:26 id_dsa
-rw-------  1 pm pm    598 2004-12-09 16:26 id_dsa.pub
-rw-------  1 pm pm 141426 2008-04-24 08:54 known_hosts

Nejprve nás bude zajímat soubor config. Malá ukázka:

Host server1
   Hostname server1.firma2.cz
   User pm

Host doma
   Hostname mail.doma.cz
   User pm
   Compression no

Host *
   Compression yes
   ForwardAgent yes
   ForwardX11 yes
   RhostsAuthentication no
   RhostsRSAAuthentication no
   RSAAuthentication yes
   TISAuthentication no
   PasswordAuthentication yes
   FallBackToRsh no
   UseRsh no
   BatchMode no
   StrictHostKeyChecking no
   IdentityFile ~/.ssh/identity
   Port 22
   EscapeChar ~

Formát je jednoduchý, vše za host xxx jsou parametry platné pro server xxx. Ukončeno je to dalším řádkem host yyy nebo koncem souboru. Takže máme nastavené dva servery a potom ještě výchozí parametry týkající se ostatních. Pokud se chceme přihlásit na server doma, stačí zadat jen:

[pm@minastirith pm]$ ssh doma

V tom případě se použije uživatel pm a nebude se používat komprese. Kdo je maximalista a i tohle mu přijde dlouhé, může si vytvořit třeba skript nebo alias:

export alias d='ssh pm@mail.doma.cz'

Zadávat heslo nás také pokaždé nebude bavit nebo může nastat situace, kdy se na stroj chceme přihlašovat neinteraktivně. Tady na řadu přichází klíče. Princip je snadný. Vygenerujeme si dvojici klíčů – soukromý a veřejný. Dělá se to pomocí příkazu:

[pm@minastirith pm]$ ssh-keygen -t dsa

Při generování se nás program zeptá na tzv. passphrase. Když ji vyplníte, zvýšíte tím sice bezpečnost, ale opět budete muset zadávat nějaké heslo. Takže passphrasi nevyplníme. Teď máme vygenerované dva soubory. id_dsa je náš privátní klíč, a ten si musíme udržet schovaný před světem. Naopak soubor id_dsa.pub musíme rozdistribuovat na stroje, kam se chceme hlásit. Jedna z možných cest:

[pm@minastirith pm]$ cat id_dsa.pub | ssh pm@mail.doma.cz 'cat >> /home/pm/.ssh/authorized_keys'

Když použijeme výše zmíněný soubor config, stačí už jen zadat:

[pm@minastirith pm]$ ssh doma

a jsme přihlášeni, ověření uživatele se provedlo pomocí klíče. V případě problému s klíčem bude patrně nabídnuto ověření heslem. Toto už ale záleží na konfiguraci sshd.

widgety

Výše zmíněný způsob přidání klíče na druhý stroj je další věc, o které se chci zmínit. Jste asi zvyklí, že po přihlášení se spustí shell a můžete pracovat. V některých případech, ale toto ani nepotřebujeme, chceme třeba jen spustit příkaz a dozvědět se výsledek (v podstatě funkce programu rsh). Stačí za přihlášení zadat požadovaný příkaz:

pm@pm-desktop:~/.ssh$ ssh pm@mail.doma.cz uname -a
FreeBSD mail.doma.cz 6.2-RELEASE-p4 FreeBSD 6.2-RELEASE-p4 #0: Mon May 21 11:33:00 CEST 2007     root@mail.doma.cz:/usr/obj/usr/src/sys/KERNEL_MAIL_DOMA_CZ  i386

Často takovou věc používám ke sběru dat ze serverů. Je to snadné, protože ssh je všude a zároveň bezpečné. Dá se to například použít k jednoduchému zálohování. Když chceme třeba zazálohovat konfiguraci serveru, svou cron tabulku a přenést nějakou MySQL databázi na jiný server:

[pm@minastirith pm]$ ssh doma tar -cf - /etc | tar -xf -

[pm@minastirith pm]$ ssh doma crontab -l > zaloha_crontab

[pm@minastirith pm]$ ssh doma mysqldump -uuser -pheslo db1 | mysql -uuser -pheslo zaloha_db1
Našli jste v článku chybu?
DigiZone.cz: DVB-T2 ověřeno: seznam TV zveřejněn

DVB-T2 ověřeno: seznam TV zveřejněn

Vitalia.cz: dTest odhalil ten nejlepší kečup

dTest odhalil ten nejlepší kečup

Vitalia.cz: Inspekce našla nelegální sklad v SAPĚ. Zase

Inspekce našla nelegální sklad v SAPĚ. Zase

Vitalia.cz: Tohle jsou nejlepší česká piva podle odborníků

Tohle jsou nejlepší česká piva podle odborníků

DigiZone.cz: Digi2GO u Alza.cz a s balíčkem Sport zdarma

Digi2GO u Alza.cz a s balíčkem Sport zdarma

Lupa.cz: Hackeři mají data z půlmiliardy účtů Yahoo

Hackeři mají data z půlmiliardy účtů Yahoo

Lupa.cz: Aukro.cz mění majitele. Vrací se do českých rukou

Aukro.cz mění majitele. Vrací se do českých rukou

Podnikatel.cz: Znáte už 5 novinek k #EET

Znáte už 5 novinek k #EET

Podnikatel.cz: Dva měsíce na EET. Budou stačit?

Dva měsíce na EET. Budou stačit?

Lupa.cz: Jak se prodává firma za miliardu?

Jak se prodává firma za miliardu?

DigiZone.cz: Parlamentní listy: kde končí PR...

Parlamentní listy: kde končí PR...

Podnikatel.cz: EET pro e-shopy? Postavené na hlavu

EET pro e-shopy? Postavené na hlavu

Vitalia.cz: 5 důvodů, proč jet na výlov rybníka

5 důvodů, proč jet na výlov rybníka

DigiZone.cz: Numan Two: rozhlasový přijímač s CD

Numan Two: rozhlasový přijímač s CD

120na80.cz: Hrbatá prsa aneb mýty o implantátech

Hrbatá prsa aneb mýty o implantátech

Vitalia.cz: Muž, který miluje příliš. Ženám neimponuje

Muž, který miluje příliš. Ženám neimponuje

Podnikatel.cz: Byla finanční manažerka, teď cvičí jógu

Byla finanční manažerka, teď cvičí jógu

Podnikatel.cz: Takhle se prodávají mražené potraviny

Takhle se prodávají mražené potraviny

DigiZone.cz: Ginx TV: pořad o počítačových hráčích

Ginx TV: pořad o počítačových hráčích

Vitalia.cz: Test dětských svačinek: Tyhle ne!

Test dětských svačinek: Tyhle ne!