Preposielanie portov cez tunel SSH vo Windows

V tomto článku si ukážeme, ako používať vstavaný server Windows OpenSSH presmerovanie portov cez tunel SSH (Tunelovanie SSH). Presmerovanie portov v SSH vám umožňuje vyladiť aplikačné porty z lokálneho počítača na vzdialený server a naopak. Skôr sa presmerovanie portov cez tunel SSH používalo iba v prostredí Linux / Unix, ale teraz môžete tieto výhody využívať aj v systéme Windows. Pozrime sa na praktický príklad, ako poslať ďalej pripojenie RDP na systéme Windows Server cez server SSH s otvoreným portom TCP 22.

Presmerovanie portov prostredníctvom SSH sa najčastejšie používa v scenároch, keď sa potrebujete pripojiť k vzdialenému počítaču, ktorý je chránený bránou firewall. Napríklad máte server so systémom Windows, na ktorom je otvorený iba port SSH (TCP 22). Všetky ostatné porty sú blokované hardvérovou bránou firewall alebo bránou Windows. Vašou úlohou je pripojiť sa k pracovnej ploche tohto servera Windows pomocou klienta RDP. Zdalo by sa to nemožnou úlohou, pretože RDP 3389 je blokovaný bránou firewall. Technológiu preposielania portov však môžete použiť cez tunel ssh..

Najbežnejšie sa používajú nasledujúce skripty na posielanie SSH:

  • Lokálne presmerovanie TCP - presmerovať lokálny port na vzdialený server;
  • Vzdialené presmerovanie TCP - presmerujte vzdialený port na lokálny počítač;
  • Tunel duálny ssh - umožňuje pripojenie počítačov cez SSH server bez vyhradených bielych IP adries alebo za NAT (ak sa riešenie s OpenVPN nehodí)

Prístup RDP cez tunel SSH (lokálne presmerovanie TCP)

V tomto režime si vo svojom počítači vytvoríte lokálny port TCP, ktorého pripojenia sú presmerované cez tunel SSH na určený port na vzdialenom serveri. V tomto príklade vytvoríme lokálny port 8888, keď je pripojený, na ktorý sa presmeruje z tohto portu na port RDP 3389 vzdialený počítač. Všeobecná schéma pripojenia vyzerá takto:

Ak chcete vytvoriť tunel SSH pomocou vstavaného klienta SSH (v systéme Windows 10 1809 a Windows Server 2019), spustite príkaz:

ssh -L 8888: 192,166,90: 3389 root@192,166,90

Aby tunel SSH fungoval na pozadí, musíte pridať parameter -F.

Teraz, ak sa chcete pripojiť k vzdialenému počítaču cez tunel SSH, musíte pripojiť klienta mstsc.exe RDP k miestnemu portu 8888 vášho počítača:

127.0.0.1:8888

Prihláste sa do vzdialeného počítača a môžete bezpečne pracovať v relácii RDP, pričom si pamätáte, že port 3389 je v bráne firewall stále zatvorený. Pomocou protokolu TCPView môžete overiť, či je pripojenie RDP vytvorené lokálne (pripojenie RDP je iniciované lokálne spusteným serverom SSH)..

Upozorňujeme, že ak týmto spôsobom presmerujete nešifrovaný prenos aplikácií, bude prenášaný v šifrovanej podobe cez sieť. Prevádzka v prípade čela je šifrovaná na jednom konci spojenia SSH a dekódovaná na druhom.

V tomto režime sa budú môcť k vzdialenému serveru RDP pripojiť aj iné počítače vo vašej miestnej sieti, a to aj vtedy, ak majú úplne zablokovaný priamy prístup k vzdialenému serveru (prostredníctvom SSH aj RDP). Na tento účel musia pripojiť klienta RDP k portu 8888 vo vašom počítači, na ktorom je vytvorený tunel SSH:

mstsc.exe / v 10.10.1.220:8888

Prenos vzdialeného portu na lokálny počítač (Remote TCP forwarding)

Existuje ďalší prípad použitia tunela SSH - vzdialené preposielanie TCP. Prostredníctvom tunela SSH môžete povoliť vzdialený prístup servera k miestnemu portu v počítači alebo k portu na inom počítači v miestnej sieti. Napríklad chcete, aby externý server (192.168.1.90) mal prístup na vaše stránky intranetu (neuverejnené na internete). Ak chcete vytvoriť spätný tunel, použite tento príkaz:

ssh -R 8080: Internalwebsever: 80 [email protected]

Teraz, aby ste mali prístup na webový server s vnútorným webovým serverom na vzdialenom serveri SSH, stačí do prehliadača zadať adresu http: // localhost: 8080.

Vo všetkých verziách systému Windows môžete pomocou príkazu vytvoriť pravidlá preposielania portov portproxy rozhrania netsh.

S tunelmi SSH môžete zostaviť celé reťazce na presmerovanie portov. V konfiguračnom súbore môžete povoliť alebo zakázať tunelovanie SSH sshd_config smernice:

AllowStreamLocalForwarding yes

AllowTcpForwarding remote