Přeposílání portů přes tunel SSH ve Windows

V tomto článku si ukážeme, jak používat integrovaný server Windows OpenSSH přesměrování portů přes tunel SSH (Tunel SSH). Přesměrování portů v SSH vám umožňuje vyladit (předat) aplikační porty z místního počítače na vzdálený server a naopak. Dříve bylo přesměrování portů tunelem SSH používáno pouze v prostředí Linux / Unix, ale nyní můžete tyto funkce využít i ve Windows. Podívejme se na praktický příklad, jak předat připojení RDP na systému Windows Server prostřednictvím serveru SSH s otevřeným portem TCP 22.

Přesměrování portů pomocí SSH se nejčastěji používá ve scénářích, kdy je třeba se připojit ke vzdálenému počítači, který je chráněn bránou firewall. Máte například server se systémem Windows, na kterém je otevřen pouze port SSH (TCP 22). Všechny ostatní porty jsou blokovány hardwarovou bránou firewall nebo bránou Windows. Vaším úkolem je připojit se k ploše tohoto serveru Windows pomocí klienta RDP. Vypadalo by to jako nemožný úkol, protože RDP 3389 je blokován bránou firewall. Můžete však použít technologii předávání portů prostřednictvím ssh tunelu..

Nejběžněji se používají následující předávací skripty SSH:

  • Lokální předávání TCP - přeposlat místní port na vzdálený server;
  • Vzdálené předávání TCP - přeposlat vzdálený port na místní počítač;
  • Tunel duálního ssh - umožňuje připojení počítačů přes SSH server bez vyhrazených bílých IP adres nebo za NAT (pokud se řešení s OpenVPN nehodí)

RDP přístup přes SSH tunel (místní TCP předávání)

V tomto režimu vytvoříte v počítači místní port TCP, jehož připojení jsou přesměrována přes tunel SSH na určený port na vzdáleném serveru. V tomto příkladu vytvoříme místní port 8888, při připojení, na které se přesměruje z tohoto portu na port RDP 3389 vzdálený počítač. Obecné schéma připojení vypadá takto:

Chcete-li vytvořit tunel SSH pomocí integrovaného klienta SSH (vestavěný do systému Windows 10 1809 a Windows Server 2019), spusťte příkaz:

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

Aby tunel SSH fungoval na pozadí, musíte přidat parametr -f.

Nyní se pro připojení ke vzdálenému počítači pomocí tunelu SSH musíte připojit klienta RDP mstsc.exe k místnímu portu 8888 vašeho počítače:

127,0.0,1:8888

Přihlaste se ke vzdálenému počítači a můžete bezpečně pracovat v relaci RDP, zatímco si pamatujete, že port 3389 je v bráně firewall stále uzavřen. Pomocí protokolu TCPView můžete ověřit, že připojení RDP je navázáno lokálně (připojení RDP je iniciováno lokálně spuštěným serverem SSH).

Vezměte prosím na vědomí, že pokud přesměrováváte nešifrovaný přenos aplikací tímto způsobem, bude přenášen v šifrované podobě přes síť. Provoz na čele je šifrován na jednom konci spojení SSH a dešifrován na druhém.

V tomto režimu se budou moci k vzdálenému serveru RDP připojit i další počítače ve vaší místní síti, i když mají zcela zablokován přímý přístup ke vzdálenému serveru (prostřednictvím SSH i RDP). K tomu musí připojit klienta RDP k portu 8888 ve vašem počítači, na kterém je vytvořen tunel SSH:

mstsc.exe / v 10.10.1.220:8888

Přenos vzdáleného portu na místní počítač (vzdálené předávání TCP)

Existuje další případ použití tunelu SSH - vzdálené předávání TCP. Prostřednictvím tunelu SSH můžete povolit vzdálený přístup na server k místnímu portu v počítači nebo k portu na jiném počítači v místní síti. Například chcete, aby externí server (192.168.1.90) přistupoval na váš intranetový server (není zveřejněn na internetu). Chcete-li vytvořit zpětný tunel, použijte tento příkaz:

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

Nyní, za účelem přístupu na interní webový server na vzdáleném SSH serveru, stačí zadat adresu do prohlížeče http: // localhost: 8080.

Ve všech verzích systému Windows můžete pomocí příkazu vytvořit pravidla pro předávání portů portproxy rozhraní netsh.

S tunely SSH můžete sestavit celé řetězce pro předávání portů. V konfiguračním souboru můžete povolit nebo zakázat tunelování SSH sshd_config směrnice:

AllowStreamLocalForwarding yes

AllowTcpForwarding remote