SSH tunel v PuTTY

Z Milan Kerslager
Přejít na: navigace, hledání

SSH tunel v PuTTY umožní přenést lokální síťovou komunikaci do vzdáleného počítače nebo do vzdálené počítačové sítě. SSH tunel podporuje pouze tunelování TCP, takže je možné tunelovat pouze služby jako je HTTP (webové stránky), SMTP (přenos elektronické pošty), POP3 (stahování nové pošty), IMAP (vzdálené ovládání poštovní schránky) a podobně. Nelze snadno tunelovat FTP, protože používá dvě TCP spojení. Nelze tunelovat například ani sdílení v sítích Windows, protože používají několik portů v kombinaci TCP i UDP protokolu.

V tomto článku je návod pro vytvoření tunelu pomocí PuTTY, což je aplikace pro Microsoft Windows, která umožňuje připojení ke vzdálenému počítači pomocí textového rozhraní (příkazový řádek). Pro připojení ke vzdálené síti, kdy budou dostupné libovolné služby bez individuálního nastavování tunelu, je nutné používat VPN (Virtuální privátní síť), která však není předmětem tohoto článku.

PuTTY

Stáhněte si klienta PuTTY ze stránky http://www.putty.org (necelých 500 kB). Program je ve formě EXE souboru a není nutné jej instalovat, takže je možné ho přímo spouštět například z USB disku. Pro potřeby vytvoření tunelu je nutné mít v cílové síti shellový účet (na SPŠSE v Liberci například účet na počítači Pluto (viz http://www.pslib.cz/wiki/Server_Pluto, tj. pluto.pslib.cz) nebo Výuka (vyuka.pslib.cz).

Uložení nastavení

Pokud nechcete neustále vyplňovat přihlašovací údaje nebo informace o tunelu, je možné nastavení v PuTTY uložit ještě před tím, než dojde k přihlášení (včetně nastavení tunelu nebo dalších nastavení). V úvodním okně PuTTY (viz obrázek 1) vyplňte požadované údaje o serveru do políčka Host Name (lze včetně přihlašovacího jména například v podobě huzva@pluto.pslib.cz). Pak ve stejném okně nalistujte obrazovku ConnectionSSHTunnels, kde nastavte tunel. Můžete nastavit i překlad kódování, který je v menu nastavení WindowTranslation (pro server pluto.pslib.cz je to UTF-8). Na závěr se vraťte do Session, zde vyplňte jméno ukládaného nastavení do políčka Saved sessions (nebo klikněte na již uložené nastavení) a v zápětí klikněte na Save. Původní (uložené) nastavení lze nahrát kliknutím na název a pak tlačítko Load.

Tunel pro připojení ke školnímu PostgreSQL

Školní PostgreSQL server je dostupný pouze z počítačů ve školní síti, nikoliv odkudkoliv z Internetu, což je bezpečnostní opatření. Pokud chcete pracovat s SQL databází i z jakéhokoliv jiného místa, kde máte připojení k Internetu, je možné vytvořit tunel například skrze server Pluto (pluto.pslib.cz), který poskytuje studentům shellové účty.

Připojení k pluto.pslib.cz

Přihlašte se pomocí PuTTY na školní server Pluto. Po spuštění PuTTY vyplňte v políčku Host Name doménové jméno pluto.pslib.cz. Pokud nechcete neustále zadávat své přihlašovací jméno, můžete ho do tohoto políčka uvést v podobě huzva@pluto.pslib.cz) a přihlašte se (viz obrázek 1 a obrázek 2).

Nastavení tunelu pro PostgreSQL

Po přihlášení je možné nastavit tunel z lokálního počítače (z portu 5432) na počítač server.pslib.cz, port 5432. Po nastavení tunelu bude veškerá síťová komunikace odesílaná do lokálního portu 5432 přeposílána tunelem na server pluto.pslib.cz, kde z tunelu síťový provoz vystoupí. Po vystoupení z tunelu je síťová komunikace odeslána na počítač server.pslib.cz (port 5432). Server uvidí komunikaci přicházející z počítače pluto.pslib.cz a povolí přístup k databázi, protože pluto.pslib.cz je umístěn ve vnitřní školní síti. Nezávisle na tom, odkud je uživatel pomocí PuTTY přihlášen, je tedy možné se pomocí tunelu připojit ke školnímu serveru jakoby uživatel pracoval přímo na serveru pluto.pslib.cz.

Klikněte do levého horního rohu okna programu PuTTY, čímž bude vyvoláno menu (obrázek 3). V tomto menu zvolte položku Change settings..., čímž se otevře okno nastavení (obrázek 4). V okně nastavení aktivujte obrazovku ConnectionSSHTunnels, kterou vyplňte údaji podle obrázku. V políčku Source port bude hodnota lokálního portu, na kterém bude PuTTY naslouchat (tj. 5432). Oe vstupním políčku Destination vyplňte server.pslib.cz:5432, což je adresa a port, na který bude odesílán veškerý provoz, který přijde z tunelu (tj. adresa školního PosgreSQL serveru). Klikněte na tlačítko Add, abyste získali situaci, která je ukázána na obrázku 5. Teprve pak klikněte na tlačítko Apply, čímž je rekonfigurace PuTTY dokončena.

Pro kontrolu nastavení tunelu vyvolejte menu (kliknutí do levého horního roku okna PuTTY), zvolte Change settings... a nastavení Connection - SSH - Tunnels. Ustavený tunel musí být zaznamenán v obdélníkovém okně, jak je vidět na obrázku 5.

Připojení k databázi

K PostgerSQL je nyní možné se připojit tak, že ve svém počítači (na kterém je spuštěn PuTTY a v něm nastaven tunel) nasměrujete program, který se umí k PostgreSQL připojit, na svůj lokální port 5432. Tj. například v programovacím jazyce Java bude příslušný řádek vypadat takto:

final String url = "jdbc:postgresql://localhost/rene.huzva";
...
connection = DriverManager.getConnection(url, user, password);

V uvedeném příkladu je rene.huzva jméno databáze v PosgreSQL, ke které se připojujeme.

Jak tunel pracuje

Externí odkazy