Hlavní navigace

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?

12. 5. 2008 21:25

Mozna protoze to s ssh souvisi :-) Mala zminka myslim nikoho tolik neobtezuje, tolik prostoru jsem neradkovym programum nedal. Spousta lidi musi krome linuxu pouzivat i linux a jim se treba takova vec muze hodit.

13. 5. 2008 16:03

tomkCZ (neregistrovaný)
Doufejme, ze u vpnky pro chude, aneb tunelovani pres ssh jeste zustane i v pristim dile, primlouvam se za priklady X forwardingu apod.
Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel

Podnikatel.cz: EET zvládneme, budou horší zákony

EET zvládneme, budou horší zákony

DigiZone.cz: ČRo rozšiřuje DAB do Berouna

ČRo rozšiřuje DAB do Berouna

DigiZone.cz: ČRa DVB-T2 ověřeno: Hisense a Sencor

ČRa DVB-T2 ověřeno: Hisense a Sencor

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

Vitalia.cz: Říká amoleta - a myslí palačinka

Říká amoleta - a myslí palačinka

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

Podnikatel.cz: Víme první výsledky doby odezvy #EET

Víme první výsledky doby odezvy #EET

Vitalia.cz: Tesco: Chudá rodina si koupí levné polské kuře

Tesco: Chudá rodina si koupí levné polské kuře

Root.cz: Vypadl Google a rozbilo se toho hodně

Vypadl Google a rozbilo se toho hodně

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

DigiZone.cz: NG natáčí v Praze seriál o Einsteinovi

NG natáčí v Praze seriál o Einsteinovi

Lupa.cz: Avast po spojení s AVG propustí 700 lidí

Avast po spojení s AVG propustí 700 lidí

Lupa.cz: UX přestává pro firmy být magie

UX přestává pro firmy být magie

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0

DigiZone.cz: ČT má dalšího zástupce v EBU

ČT má dalšího zástupce v EBU

Podnikatel.cz: Babiše přesvědčila 89letá podnikatelka?!

Babiše přesvědčila 89letá podnikatelka?!

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?