SSH pro spojení počítačů za NATem

Milý deníčku, je to tady. Technický článek! Teda spíš takový mikročláneček. Navíc o port forwardingu pomocí SSH,[1] což je věc (nejspíš) docela provařená. Opět je to tedy poznámka pro mě (sice trvá asi 2 minuty to najít v manuálových stránkách, ale až to budu zase potřebovat, nebudu ani vědět CO chci vlastně najít).

Situace: Dva počítače, každý umně gr. skrytý za svým NATem bez možnosti jeho konfigurace. Jeden viditelný stroj, na něž se mohou uživatelé obou počítačů příhodně přihlásit přes SSH,[2] a který není šťastný, když mu zvenčí saháte na jakékoli jiné porty.

Žádaný výsledek: Alice se připojí na Bobův lokální port 1234, kde jistě běží něco užitečného.[3]

Postup: Bob ustaví reversní port forwarding, spojení k example.org:51234 budou přes SSH přeposlána na port 1234 Bobova počítače, kde bude naslouchat server (zde obyčejný netcat, což je přesně to, jako co to zní).

bob@rebelove$ ssh -fNR 51234:localhost:1234 robert@example.org
bob@rebelove$ nc -l -p 1234

Alice se nemůže jen tak připojit na example.org:51234, neboť by mohla skončit na graylistu (been there, done that), takže tuto komunikaci musí tunelovat. Její lokální port 4321 bude přes SSH připojen k vzdálenému portu example.org:51234. And that’s it. Nyní se může připojit k místnímu portu 4321 a komunikovat přes něj s Bobem.

alice@next_door$ ssh -fNL 4321:example.org:51234 alenka@example.org
alice@next_door$ nc localhost 4321

Volba -N říká, že se na druhém konci spojení nemá spouštět shell ani jiný program (a je tak přímo stvořená k forwardování). Volbou -f požádáme SSH klienta, aby se po přihlášení odporoučel do pozadí. Pokud volbu nezadáme, bude nutné pro další práci otevřít nový terminál. Avšak pozor, ssh na pozadí neskončí spolu s terminálem. Pokud nechcete nechávat otevřené spojení, musíte proces ukončit ručně, třeba killem.

4 thoughts on “SSH pro spojení počítačů za NATem”

    1. Neříkej, žes‘ to dočetla.
      Hezký článek. To -R a -L dělá ten reversní (netento) tunel? Proč? Vždyť pak se stejně dá bavit v obou směrech, hien?

      1. Dočetla, marně jsem totiž čekala, že se dozvím, co spolu Bob a Alice mají.

Komentáře nejsou povoleny.