Smitka development

Hrajeme si s SSH

SSH - Secure Shell je klient/server protokol v síti TCP/IP, který umožňuje bezpečnou komunikaci mezi dvěma počítači pomocí transparentního šifrování přenášených dat. Pracuje na portu TCP/22. Pokrývá tři základní oblasti bezpečné komunikace: autentizaci obou účastníků komunikace, šifrování přenášených dat a integritu dat (úvod z wiki).
A nyní se podíváme co zajímavého nám může přinést ve spojení s linuxovým strojem.
Pokud pracujeme na linuxu, stačí nám jen příkazová řádka - ssh klient je snad ve všech distribucích. Pokud jsme na windows, potřebujeme nějakého šikovného klienta, dobrá volba je PuTTY. V příkladech budu popisovat nastavení z PuTTY a přidám ekvivalentní příkaz i pro příkazovou řádku.

Vzdálený shell

Základní funkcí je přístup k příkazové řádce vzdáleného počítače. Po připojení ke vzdálenému počítači s ním můžeme pracovat, jako bychom u něj přímo seděli.

Forwardování X serveru

Předchozí tvrzení neplatí na 100%. Většinou používáme nějaké ty okenní aplikace, které nám příkazový řádek nemusí plně nahradit. Proto je zde možnost směrovat si grafický výstup k sobě. V PuTTY si musíme zaškrtnout v Connection-SSH-X11 Enable X11 forwarding. Jelikož Xka jsou klient-server, budeme do windows nějaký ten X-klient potřebovat. Já používám Xming, jeho nastavení je jednoduché. Pokud máme X-klient puštěný a forwardování nastavené, můžeme otestovat funkčnost např. příkazem xclock, který spustí analogové hodiny.
Toto nastavení PuTTY je analogické k příkazu: ssh jmeno@server -X, případně místo X použít Y, což by měl být nějaký kompatibilní mód pro případ problémů.

Forwardování TCP/IP portů

Velice zajímavou hračkou je možnost přesměrovat si určitý port ze svého stroje na vzdálený, nebo naopak.
V PuTTY nás zajímá Connection-SSH-Tunnels. Pokud chceme přesměrovat místní port ven, zvolíme Remote, vypíšeme číslo portu na který budeme směrovat a jako destination zvolíme náš stroj:port. Pro www server přesměrovaný na 10080 to bude např. localhost:80 (můžeme použí ti cizí stroj, na který máme přístup, ale náš vzdálený server k němu přístup nemá). Analogicky: ssh -R 10080:localhost:80 jmeno@server.
Pokud si chceme ze vzdáleného stroje přesměrovat port k nám, zvolíme port, na který budeme směrovat, tentokrát to bude Local a jako destination uvedeme vzdálený stroj:port. Konkrétně chceme třeba bezpečně komunikovat s mailserverem: jako source zvolíme 10110 a jako destination vzdaleny_stroj:110. Analgicky: ssh -L 10110:mailserver:110 jmeno@mailserver.

Vytvoření SSH proxy

Možná vás napadlo, zda když už jde přesměrovat port, zda by nešlo směrovat celou komunikaci, konkrétně bych rád používal svůj browser, ale konektivitu na vzdálené straně. Pro toto řešení se hodí poslední volba forwardování portů - Dynamic. Zde již stačí jen nastavit komunikační port a o ostatní se nemusíme starat. Pro vytvoření proxy na portu 3128 zadáme jen toto číslo, jako source port (= ssh -D 3128 jmeno@server).
Nyní máme připraven port a je potřeba adekvátně nastavit náš prohlížeč. Musíme ho přesvědčit, aby používal SOCKs proxy. Ve firefoxu to uděláme Možnisti-Rozšířené-Síť-Připojení-Nastavení-Ruční konfigurace proxy serverů. Zde vymažeme všechny hodnoty a u SOCKS server zvolíme server localhost a port 3128. Nyní by měla veškerá naše webová komunikace probíhat za záštitou našeho vzdáleného stroje.

Kopírování souborů

Pokud potřebujeme přenést mezi systémy nějaký soubor můžeme použít scp. Základní syntaxe příkazu je scp mistni_soubor jmeno@vzdaleny_stroj:vzdaleny_soubor. Lze použít i různé obměny, že místo místního_souboru využijeme další ssh spojení a podobně. Pro přenos souborů z windows je potřeba prográmek spouštěný z příkazové řádky - PSCP - k dostání na stránkách s PuTTY, základní syntax je stejná.


Závěrem jen řeknu, že tento článek si neklade za nároky detailně popsat ssh, ale jen upozornit na některé zajímavé možnosti - hlavně forwardování X a vytvoření proxy.
linkuj.czjagg.czpošli na vybrali.sme.skdeliciousTopČlánky.cz
Nahoru HOME PC•Elektro Programování Blog Autor Lynt Speciální backlink: Šulislav
© 2006 Smitka development