SSH тунель в Windows

Начиная с Windows 10 1809 и Windows Server 2019 в операционной системе появился встроенный SSH клиент. По умолчанию он установлен, проверить можно так:

Get-WindowsCapability -Online | ? Name -like 'OpenSSH.Client*'

Если видим статус — State: Installed, то можем использовать весь доступный функционал. Вывести доступные параметры можно с помощью PowerShell или cmd:

PS C:\> ssh
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface]
           [-b bind_address] [-c cipher_spec] [-D [bind_address:]port]
           [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11]
           [-i identity_file] [-J [user@]host[:port]] [-L address]
           [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
           [-Q query_option] [-R address] [-S ctl_path] [-W host:port]
           [-w local_tun[:remote_tun]] destination [command]

Подключение к хосту происходит аналогично командам в Linux-like среде:

ssh username@host

с указанием порта синтаксис команды следующий:

ssh username@host -p port

При первом подключении появится запрос на добавление ключа хоста в доверенные. Отпечаток ключа хоста добавится в файл C:\Users\username\.ssh\known_hosts

В случае если используется аутентификация по RSA ключам, есть возможность указать путь к файлу закрытого ключа:

ssh username@host -i "C:\Users\username\.ssh\id_rsa"

Так же можно добавить закрытый ключ в SSH-Agent, перед этим не забыть включить службу ssh-agent:

Start-Service ssh-agent

или через оснастку Службы — OpenSSH Authentication Agent.

Добавляем закрытый ключ в базу ssh-agent:

ssh-add "C:\Users\username\.ssh\id_rsa"

Теперь возможно подключаться к серверу SSH с использованием ключа RSA без указания явного пути.

ssh username@host

В данной статье нас интересует, документированная возможность SSH клиента поднимать SOCKS5 прокси при поднятии SSH соединения.

ssh -D 8000 username@host -p port

Такой командой мы укажем SSH клиенту что будем использовать туннель как SOCKS proxy.

Далее можно настроить любое приложение на Windows машине способное работать через SOCKS5 прокси. Для примера настроим браузер Firefox.

Вариант №1, просто указать в настройках браузера Основные — Параметры сети — Ручная настройка прокси — Узел SOCKS — «127.0.0.1». Проставляем чекбоксы\галочки — SOCKS5, Отправить DNS-запросы через прокси при использовании SOCKS 5. По желанию можно включить — Включить DNS через HTTPS.

Далее крайне желательно слегка подтюнинговать Firefox. В поле URL введите «about:config» без «», нажимаем «Принять риск и продолжить», а затем отфильтруйте «socks_remote_dns», затем дважды щелкните запись, чтобы изменить ее на «True». Все, DNS вашего браузера теперь будет проходить через указанный порт прокси.

На данный момент HTTP\HTTPS трафик вашего браузера, равно как и DNS запросы идут через SSH тунель до вашего сервера.

Вариант №2 (лично мне нравится больше).

Установить в браузере расширение, я использую FoxyProxy, гибкий в настройке, богатый функционал в сумме с простым дизайном. Все настройки, интуитивно понятны, понимает шаблоны, регулярные выражения, умеет логирование и т.д. Самый главный плюс что включается двумя кликами, нет необходимости лезть в настройки браузера каждый раз.

Проверить, работу тунеля можно на сайтах — https://2ip.ru/ https://www.whatismyip.com/ https://getfoxyproxy.org/geoip/

Ваш изначальный IP адрес должен изменится на адрес SSH сервера.

Оставьте комментарий