Пренасочване на порт през SSH тунел в Windows

В тази статия ще покажем как да използвате вградения Windows OpenSSH сървър за пренасочване на порт през SSH тунел (SSH тунелиране). Пренасочването на портове в SSH ви позволява да тунелирате (пренасочвате) пристанищата на приложения от локален компютър към отдалечен сървър и обратно. По-рано пренасочването на пристанища през SSH тунел се използва само в Linux / Unix среда, но сега можете да се възползвате от тези функции и в Windows. Нека да разгледаме практически пример за това как да препратите RDP връзка на Windows Server чрез SSH сървър с отворен TCP порт 22.

Най-често пренасочването на порт чрез SSH се използва в сценарии, когато трябва да се свържете към отдалечен компютър, който е защитен от защитна стена. Например, имате сървър с Windows, на който е отворен само SSH порт (TCP 22). Всички останали портове са блокирани от хардуерна защитна стена или защитна стена на Windows. Вашата задача е да се свържете с работния плот на този Windows сървър с помощта на RDP клиента. Това ще изглежда невъзможна задача, защото RDP 3389 е блокиран от защитна стена. Можете обаче да използвате технологията за пренасочване на порт през ssh тунел..

Следните SSH скриптове за препращане са най-често използвани:

  • Локално TCP пренасочване - пренасочва локален порт към отдалечен сървър;
  • Дистанционно пренасочване на TCP - пренасочете отдалечения порт към локалния компютър;
  • Двоен ssh тунел - ви позволява да свързвате компютри чрез SSH сървър без специални бели IP адреси или разположени зад NAT (ако решението с OpenVPN не се вписва)

RDP достъп през SSH тунел (локално TCP препращане)

В този режим създавате локален TCP порт на вашия компютър, връзките към който се пренасочват през SSH тунела към посочения порт на отдалечения сървър. В този пример ще създадем локален порт 8888, когато е свързан към което пренасочване се извършва от този порт към порта RDP 3389 отдалечен компютър. Общата схема за връзка изглежда така:

За да създадете SSH тунел с помощта на вградения SSH клиент (вграден в Windows 10 1809 и Windows Server 2019), изпълнете командата:

ssh -L 8888: 192.168.1.90: 3389 [email protected]

За да работи SSH тунелът на заден план, трябва да добавите параметъра .

Сега, за да се свържете с отдалечения компютър чрез SSH тунел, трябва да свържете RDP клиента mstsc.exe към локалния порт 8888 на вашия компютър:

127.0.0.1:8888

Влезте в отдалечения компютър и можете спокойно да работите в сесията на RDP, докато помните, че порт 3389 все още е затворен в защитната стена. Използвайки TCPView, можете да проверите дали RDP връзката е установена локално (RDP връзката се инициира от локално работещ SSH сървър).

Моля, обърнете внимание, че ако пренасочите некриптиран трафик на приложението по този начин, той се предава в криптиран вид по мрежата. Трафикът в случая на челото се криптира в единия край на SSH връзката и се дешифрира в другия.

В този режим други компютри във вашата локална мрежа също ще могат да се свързват с отдалечения RDP сървър, дори ако са блокирали напълно директен достъп до отдалечения сървър (както чрез SSH, така и чрез RDP). За да направите това, те трябва да свържат RDP клиента към порт 8888 на вашия компютър, на който е създаден SSH тунелът:

mstsc.exe / v 10.10.1.220:8888

Прехвърляне на отдалечен порт към локална машина (Дистанционно пренасочване на TCP)

Има и друг случай на използване за тунела SSH - дистанционно пренасочване на TCP. Чрез тунел SSH можете да разрешите достъп на отдалечен сървър до локален порт на вашия компютър или порт на друг компютър от вашата локална мрежа. Например, искате външен сървър (192.168.1.90) за достъп до вашия сайт в Интранет (не публикуван в Интернет). За да създадете обратен тунел, използвайте тази команда:

ssh -R 8080: Internalwebsever: 80 потребител@192.168.1.90

Сега, за да получите достъп до уеб сървъра за вътрешен уебсайт на отдалечен SSH сървър, просто въведете адреса в браузъра http: // localhost: 8080.

Във всички версии на Windows можете да създадете правила за пренасочване на порт чрез командата netsh интерфейс portproxy.

С SSH тунели можете да изградите цели вериги за пренасочване на пристанища. Можете да активирате или деактивирате SSH тунелиране в конфигурационния файл sshd_config директиви:

AllowStreamLocalForwarding да

Разреши дистанционно препращане