Hrátky z řádky: ssh v praxi

Petr Macek 12. 5. 2008

V předchozím článku jsme si popsali základy použití šifrovaného protokolu ssh. Dnes si ukážeme praktické příklady toho, jak můžeme ssh zajímavě využít v běžném provozu. Naučíme se tak například používat ssh agenta, vyměníme si klíče s komerčním SSH a budeme bezpečně přenášet data mezi stroji.

Ssh-agent

prvním povídání o ssh jsme generovali klíče, ale při generování jsme vynechali passphrasi (heslo klíče). Pokud máte privátní klíč (soubor id_dsa) bez tohoto hesla, vystavujete se riziku, že při odcizení klíče má útočník cestu na vaše systémy otevřenou. Pokud chcete mít vyšší bezpečnost, heslo klíče zadejte. Když útočník získá klíč, bez passphrase se stejně nepřihlásí. Jenže tím se zase dostáváme do stavu, že při každém přihlášení místo uživatelského hesla zadáváme heslo klíče. A právě proto existuje ssh-agent.

Ideální je spustit ho hned na začátku, aby všechny další procesy měly přístup k systémovým proměnným, které vytvoří.

Je několik různých způsobů spouštění, z řádky třeba takhle:

$ eval `ssh-agent`

V případě xwindows třeba záleží na distribuci, často je to úpravou xinitrc souboru.

Tím jen spustíme agenta, příkazem ssh-add (nebo ssh-add /cesta/k/id_dsa) přidáme privátní klíč a zadáme heslo klíče. Agent si bude udržovat rozšifrovaný klíč v paměti a v případě potřeby se použije, takže už není potřeba zadávat heslo klíče při přihlášení. Agent může udržovat víc klíčů, po ukončení a znovu spuštění agenta musíme klíče znovu přidat.

openSSH vs. SSH

Minule jsme si ukázali autorizaci klíčem v openSSH, ale můžete potřebovat třeba i kombinaci mezi openSSH komerčního SSH (jak klient, tak i server). SSH2 má několik odlišností v generování a ukládání klíčů. Abych tady neplýtval místem a nerozepisoval všechny kombinace, když už to udělal někdo jiný, odkazuji čtenáře na článek SSH: Convert OpenSSH to SSH2 and vise versa.

Fingerprint

Minule jsem ještě zapomněl zmínit fingerprint a vaše první přihlášení na nějaký server. Pokud se na nějaký server hlásíte poprvé, zobrazí se něco podobného:

[pm@minastirith pm]$ ssh pm@server.nekde.cz
The authenticity of host 'server.nekde.cz (99.98.97.96)' can't be established.
DSA key fingerprint is 73:9a:24:be:ef:e4:77:aa:a8:94:9b:f2:49:fa:f6:73.
Are you sure you want to continue connecting (yes/no)?

Každý ssh server má svůj veřejný klíč, ten si člověk těžko zapamatuje, proto vzniká jeho jednoznačný identifikátor (fingerprint). Je o dost kratší a pro nás použitelnější. Ten si už můžeme někam poznamenat pro kontrolu. Pokud se někam poprvé hlásíme, klient vám zobrazí fingerprint vzdáleného serveru a vy si jej můžete zkontrolovat, jestli je to opravdu on. Klíč serveru si pak můžete uložit a při dalších přihlášeních už se nebude fingerprint objevovat. Stane se tak pouze v případě, že se klíč serveru změní. V tu chvíli byste měli zpozornět – buď správce serveru mohl třeba nainstalovat jinou verzi sshd (a v tom případě stačí jen smazat starý klíč pomocí ssh-keygen -R vzdaleny.server.cz), nebo už může jít o problém a povídáte si s jiným (nebo napadeným) serverem.

Přenos dat: scp a sftp

Běžně se používá ftp, ale to má nevýhodu v tom, že neprovádí šifrování. Proto vznikl protokol scp a sftp. Začneme s jednodušším, a to je scp. Samo o sobě neautentizuje ani nešifruje, k tomu využívá právě ssh. Použití je téměř stejné jako u příkazu cp. Takto zkopírujeme soubor z našeho stroje na vzdálený:

$ scp soubor uzivatel@stroj:/cesta/kam/

Můžeme zkopírovat i ze vzdáleného stroje na lokální, do aktuálního adresáře:

$ scp uzivatel@stroj:/cesta/k/souboru/soubor .

Podobně pracuje i protokol SFTP. Oproti scp je novější a umí toho více. Namátkou třeba navázat přerušené stahování, nastavování práv,…

V řádce tedy můžete použít scp a sftp, pro vyznavače midnight commanderu klávesa F9, levý nebo pravý panel a položka shell link (v lokalizované verzi shell spojení). Tam jen zadejte uzivatel@host.domena.cz ( nebo uzivatel:heslo@host.domena.cz) a můžete pracovat se vzdálenými soubory. Toto už bylo probíráno ve starším dílu hrátek.

Pro windows existuje klient WinSCP, ke stažení na winscp.net, já raději používám plugin do Total commanderu. Lze stáhnout na adrese www.ghisler.com/plu­gins.htm. Když si potom v jednom z panelů zvolíte Síťové okolí, obejví se nová položka Secure FTP Connections. Tam už si můžete nastavit jednotlivé přístupy.

Jenoduché tunelování

Představte si klasickou síť s firewallem, na který máte přístup jen pomocí ssh pouze na firewall (třeba firewall.firma.cz). Uvnitř sítě je windows server (IP 192.168.1.1) a chcete se na něj připojit vzdálenou plochou. Nejprve přístup z Linuxu:

Vytvoříme si tunel:

$ ssh -N -f -L33089:192.168.1.1:3389 user@firewall.firma.cz

Pak už můžeme vzdálenou plochou:

rdesktop localhost:33089

Takto spuštěný tunel běží na pozadí, takže jej musíme ukončit příkazem kill.

Stejnou věc můžeme provést i z Windows třeba pomocí klienta putty. Nejprve se spojíme na firewall.firma.cz a potom na liště okna dáme pravé tlačítko myši a change settings. V levém menu potom connection → tunnels a přidáme si tunel dle obrázku. Pak už jen stači spustit vzdálenou plochu na adresu localhost:33089.

Obrázek ukazuje, jak tunel v putty nastavit. Modře je to, co musíte vyplnit, červeně je výsledek.

SSH tunel

Tímto tunelem jsme si zpřístupnili port na vzdáleném počítači na našem lokálním portu. Pomocí parametru -R můžeme zpřístupnit lokální port na nějaký port vzdáleného stroje. Tunel se nám může hodit třeba i k zabezpečení protokolů, které toto neřeší (pop3, …) O tunelech by se toho dalo napsat hodně, ale více se do dnešního dílu nevejde.

Našli jste v článku chybu?
120na80.cz: Tipy pro odvodnění organismu

Tipy pro odvodnění organismu

DigiZone.cz: O2 Sport mění název, přejde i na Full HD

O2 Sport mění název, přejde i na Full HD

Vitalia.cz: Bio vejce nepoznají ani veterináři

Bio vejce nepoznají ani veterináři

Vitalia.cz: Signál roztroušené sklerózy: brnění končetin

Signál roztroušené sklerózy: brnění končetin

DigiZone.cz: Skylink o půlnoci vypnul 12 525

Skylink o půlnoci vypnul 12 525

DigiZone.cz: Markíza HD a Dajto? U Digi TV asi minulost

Markíza HD a Dajto? U Digi TV asi minulost

Podnikatel.cz: Účtenky v rámci EET? Klidně emailem

Účtenky v rámci EET? Klidně emailem

Měšec.cz: TEST: Vyzkoušeli jsme pražské taxikáře

TEST: Vyzkoušeli jsme pražské taxikáře

Měšec.cz: Test: Výběry z bankomatů v cizině a kurzy

Test: Výběry z bankomatů v cizině a kurzy

Vitalia.cz: Sobotní masakr žrádla, chlastu a zábavy

Sobotní masakr žrádla, chlastu a zábavy

Lupa.cz: Největší torrentový web KickassTorrents padl

Největší torrentový web KickassTorrents padl

Měšec.cz: Do ostravské MHD bez jízdenky. Stačí vaše karta

Do ostravské MHD bez jízdenky. Stačí vaše karta

120na80.cz: Nyní středně velké riziko

Nyní středně velké riziko

Podnikatel.cz: Nereaguje na výzvu ČOIky, zaplatí milion

Nereaguje na výzvu ČOIky, zaplatí milion

Měšec.cz: Platíme NFC mobilem. Konečně to funguje!

Platíme NFC mobilem. Konečně to funguje!

Měšec.cz: OSVČ a zálohy: kdy musíte a nemusíte platit?

OSVČ a zálohy: kdy musíte a nemusíte platit?

DigiZone.cz: Sázka na e-sporty stanici Prima vychází

Sázka na e-sporty stanici Prima vychází

Měšec.cz: Udali ho na nelegální software a přišla Policie

Udali ho na nelegální software a přišla Policie

DigiZone.cz: Kauza technik: oficiální vyjádření Novy

Kauza technik: oficiální vyjádření Novy

Podnikatel.cz: Musí mít e-shopař sklad a provozovnu?

Musí mít e-shopař sklad a provozovnu?