Kromě odesílání dat ssh může protokol ssh tunelovat další provoz mezi dvěma hostiteli. Nejběžnější ssh tunely jsou vzdálené a místní.
Tunelování SSH nebo předávání portů SSH je metoda vytvoření šifrovaného spojení SSH mezi klientem a serverem, přes které lze přenášet porty služeb.
Místní tunel SSH s přesměrováním portů
Lokální ssh tunel můžete použít, když se chcete dostat ke zdroji, ke kterému se nemůžete dostat přímo, ale ssh server, ke kterému máte přístup, ano. Zde je několik scénářů.
Proxy na vzdálený server
Na obrázku výše se modrý hostitel nemůže dostat na http://192.168.0.3
ale umí ssh na 192.168.0.2. Následující příkaz ssh byl spuštěn na modrém hostiteli umožní modrému hostiteli dosáhnout červeného hostitele.
ssh -L 8080:192.168.0.3:80 [email protected]
Nyní může modrý hostitel otevřít prohlížeč, přejděte na http://localhost:8080
a bude vám prezentována webová stránka hostovaná na 192.168.0.3.
Přesměrování místního portu
Na obrázku výše se modrý hostitel chce připojit k červenému hostiteli na portu 80, ale mezi tím je brána firewall, která to popírá. Protože modrý hostitel může ssh na červeného hostitele, můžeme pro přístup k tomuto portu vytvořit místní tunel přesměrování portů ssh.
Příkaz na modrém hostiteli bude:
ssh -L 8080:192.168.0.2:80 [email protected]
Nyní, když modrý hostitel otevře prohlížeč a přejde na http://localhost:8080
budou moci vidět vše, co má červený server na portu 80.
Syntaxe místního předávání portů
Tato syntaxe pro vytvoření místního tunelu pro předávání portů ssh je tato:
ssh -L <LPORT>:<RHOST>:<RPORT> <GATEWAY>
Vzdálený tunel SSH s přesměrováním portů
V tomto scénáři vytváříme reverzní ssh tunel. Zde můžeme iniciovat ssh tunel jedním směrem a pak použít tento tunel k vytvoření ssh tunelu zpět na druhou stranu. To může být užitečné, když pustíte počítač s dronem do sítě a chcete, aby „telefonoval domů“. Když pak zavolá domů, můžete se k němu připojit prostřednictvím zavedeného ssh tunelu.
Jsme na zeleném hostiteli a chceme ssh na modrém hostiteli. Brána firewall však toto připojení přímo blokuje. Protože modrý hostitel umí ssh k zelenému hostiteli, můžeme se pomocí toho připojit, a když se zelený hostitel chce vrátit ssh k modrému hostiteli, může jet tímto dříve zavedeným tunelem.
Modrý hostitel zahájí ssh tunel takto:
ssh -R 2222:localhost:22 [email protected]
Tím se otevře port 2222 na zeleném hostiteli, který jej pak přesměruje na port 22 na modrém hostiteli. Pokud by se tedy zelený hostitel připojil k sobě na portu 2222, dosáhl by modrého hostitele.
Zelený hostitel nyní může ssh ssh na modrého hostitele takto:
ssh -p 2222 [email protected]
Použití možnosti -N
Při použití ssh můžete zadat -N
příznak, který říká ssh, že nemusíte posílat žádné příkazy přes ssh připojení, když je navázáno. Tato možnost se často používá při vytváření tunelů, protože často nepotřebujeme dostávat výzvu.
Autossh
autossh
příkaz se používá k přidání vytrvalosti do vašich tunelů. Jeho úkolem je ověřit, zda je vaše připojení ssh aktivní, a pokud ne, vytvořit jej.
Zde je příkaz autossh, který možná znáte.
autossh -N -i /home/blueuser/.ssh/id_rsa -R 2222:localhost:22 [email protected]
-i /home/blueuser/.ssh/id_rsa
volba říká, že k ověření tohoto připojení ssh se má použít certifikát.
Nyní, když se váš tunel zhroutí, automaticky se pokusí znovu připojit a bude to zkoušet, dokud to nebude úspěšné. Aby byl trvalý i po restartu, přidejte příkaz ssh jako úlohu cron.