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