SSH tunelování

Pokud znáte pojem SSH, pravděpodobně jej používáte pro vzdálené ovládání serveru (nebo aspoň pro přenos souborů). SSH má však i několik dalších využití, mezi které bezesporu patří ssh tunneling.

SSH tunely slouží k bezpečnému přesměrování portů mezi dvěma (a více) počítači. Lze jej využít například pro vzdálený přístup k vývojové verzi webu, která je uložena na vaše domácím počítači.

Modelová situace

Máte schůzku s klientem v kavárně a potřebujete mu ukázat web, který běží na vašem domácím počítači. Buďto můžete na routeru povolit dálkový přístup k portu 80 (na domácím počítači) nebo se k tomuto portu dočasně dostat pomocí SSH tunelu. Tunel má několik výhod - řešení je dočasné a funguje jen pro váš počítač, je bezpečné (SSH je šifrované) a nepotřebujete spoléhat na průchodnost portů přes různe firewally atp. Stačí když "protlačíte" SSH spojení.

Tunelování

Samotné vytvoření SSH tunelu je velice jednoduché. Vystačíte si s jedním příkazem (ssh), nemusíte instalovat žádné extra balíčky.

ssh user@home_ip -N -L localport:home_ip:remoteport

  • home_ip je ip adresa/hostname počítače, na který se připojujete
  • localport je port, přes který se bude z lokálního počítače připojovat na domácí
  • remoteport je vzdálený port, který bude díky tunelu dostupný na lokálním počítači
  • přepínač "-N" říká, že nechete spouštět žádné příkazy na vzdáleném počítači

například tedy příkaz

ssh user@82.24.12.241 -N -L 2345:home_ip:80

otevře na lokálním počítačí port 2345, který bude provázán s portem 80 na vzdáleném počítači -> pokud do prohlížeče zadáte adresu localhost:2345, zobrazí se vám to, co je obsahem webového serveru na vzdáleném počítači. V kombinaci s lokálním souborem /etc/hosts lze takto přístoupit k libovolné hostname adrese na vzdáleném počítači. Tunel jednoduše ukončíte pomocí klávesové zkratky CTRL+C.

Konfigurační soubor SSH zjednoduší příkazy

Zdá se vám příkaz pro vytvoření tunelů příliš dlouhý? Dá se zkrátit pomocí použití konfiguračního souboru. Běžně jej naleznete v souboru ~/.ssh/config

Pro zjednodušení uvedeného příkladu si v souboru config můžeme vytvořit záznam, který bude vypadat nějak takto:

Host tunnel-home
    Hostname 82.24.12.241
    User user
    Port 22
    LocalForward 2345 127.0.0.1:80

Tento záznam vám umožní zkrátit ssh user@82.24.12.241 -N -L 2345:home_ip:80 na ssh -N tunnel-home

Přesměrování více portů najednou

Nestačí vám přesměrovat pouze jeden port? Pak jednoduše stačí přidat do konfiguračního souboru další řádky s direktivou LocalForward, nějak takto:

Host tunnel-home
    Hostname 82.24.12.241
    User user
    Port 22
    LocalForward 2345 127.0.0.1:80
    LocalForward 2346 127.0.0.1:8000
    LocalForward 2347 127.0.0.1:3306

SSH toho umí daleko víc. Pro inspiraci si můžete pročíst tyto stránky:

Add new comment

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.