SSH туннелирование в Unix Windows

archive view archive save

SSH туннелирование в Unix <-> Windows SSH туннелирование пригодится для обхода неких ограничений установленных брандмауэром или же просто для создания безопасного туннеля передачи данных. Кроме прямого SSH туннелирования можно также сделать проброс данных с локального порта через SSH туннель на некий порт некой удалённой машины или наоборот.

Как в случае прямого SSH туннелирования так и с пробросом порта, на одной из сторон всегда должен быть установлен рабочий SSH сервер! SSH туннелирование даёт возможность бродить по сети от имени того компьютера, к которому был организован SSH туннель. Например если у нас имеется доступ к SSH где-то в Зимбабве, то при помощи SSH туннеля мы можем лазить по сети от имени Зимбабве:)

SSH туннелирование

Прямое SSH туннелирование

Что имеется ввиду под "Прямое SSH туннелирование"? Прямое SSH туннелирование это когда SSH клиент запускается в режиме sock-proxy (опция -D) и соединившись с удалённой машиной по SSH протоколу передает через неё (удалённую машину) TCP трафик, например сессия прямого SSH туннеля с удалённой машиной через консольный SSH клиент (OpenSSH) в Windows:

C:\OpenSSH\bin>ssh -D 4444 -p 28666 user@remotehost.com
The authenticity of host 'remotehost.com (96.172.128.114)' cant be establishe
d.
RSA key fingerprint is 5e:ea:62:5f:fc:3b:b2:38:d6:ba:6b:aa:65:3f:d4:35.
Are you sure you want to continue connecting (yes/no)? y
Please type 'yes' or 'no': yes
Warning: Permanently added 'remotehost.com,96.172.128.114' (RSA) to the list o
f known hosts.
user@remotehost.com password:
Last login: Thu Feb 7 03:34:45 2013 from 108.95.46.202
[user@remotehost ~]$

Запуская SSH клиент с опцией -D 4444 мы повелеваем ему после запуска прослушивать локальный порт 4444 и после подключения к удалённому хосту remotehost.com, на удалённый порт -p 28666 и с именем пользователя user, отправлять наш TCP трафик к месту назначения от своего имени - т.е. от имени remotehost.com с ИП 96.172.128.114.

Проброс порта через SSH туннель на порт удалённой машины

В этом случае, после подключения по SSH протоколу с удалённой машиной [email protected], данные с локального порта через SSH туннель удаленной машины будут переданы будут переданы дальше на некий порт некой удалённой машины, например прокси-серверу. Выглядит это примерно так:

ssh -L [bind_address:]port:host:hostport -p 28666 user@remotehost.com

Аналогично предыдущему примеру с той лишь разницей, что конечной точкой пересылающей/принимающей наш TCP трафик будет не [email protected], а некий host:hostport

Есть также вариант проброса TCP трафик с удалённого порта удалённой машины [email protected] на локальный порт локальной машины или ещё куда-нибудь.

ssh -R [bind_address:]port:host:hostport -p 28666 user@remotehost.com

В консольных ssh клиентах для Unix подобных ОС есть ещё одна полезная опция -C (Requests compression of all data) для сжатия данных, которая отсутствует в ssh клиенте (OpenSSH) для Windows, но есть в PLINK.EXE от PuTTY.

В качестве SSHD для Windows можно предложить WinSSHD, а в качестве консольного SSH клиента под Windows OpenSSH соответственно или на худой конец PLINK.EXE от PuTTY.

SSH тунель в PuTTY

Для использования в PuTTY SSH туннелирования в настройках "Сonnection -> SSH -> Tunnels" введите:

Source port: 4444
Destination: localhost:4444

Отметьте пункт "Dynamic" и нажмите "Add". В "Session" укажите нужное "Host Name" имя хоста, укажите SSH протокол и сохраните настройки выбрав в "Saved Sessions" подходящее имя, ну, например, "HostName aka ssh tunnel on 4444" и сохраните "Save", после чего двойным кликом на этом имени установите соединение.

Когда SSH-соединение будет установлено, мы сможем использовать свой браузер через локальны прокси на порту 4444. Зайдите на любую веб-страницу, где определяется ваш IP адрес и убедитесь в том, что определяется не ваш реальный IP адрес, а IP адрес удаленной машины.

Вложенные SSH туннели

Допускаются вложенные SSH туннели, например:

ssh -L [bind_address:]port:host:hostport -p 28666 user@remotehost1.com \
    ssh -L [bind_address:]port:host:hostport -p 28666 user@remotehost2.com
ssh -L 192.168.0.2:8080:127.1:9999 user@8.8.8.8 \
    ssh -L 127.1:9999:127.1:80 user2@10.1.1.2

В этом примере (рисунок ниже) мы бросаем данные с порта 8080 компьютера "А" (192.168.0.2), на локальный хост и порт 9999 компьютера "Б" (8.8.8.8), а сразу после подключения к компьютеру "Б" (8.8.8.8) запускаем на нём ssh клиент, принимаем данные (127.1:9999) и бросаем их дальше на локальный хост 127.1:80 компьютера внутренней сети 10.1.1.2.

Реверс сокс-прокси. По идее офицеры службы безопасности, которые озабочены запретом Интернета на машине 10.1.1.2, должны повыдёргивать на попе все волосы, ибо приведённая ниже команда должна организовать доступ к сети Интернет для машины 10.1.1.2 через сокс-прокси, который запущен на машине «А».

ssh -D 8080 -R 127.1:8080:127.1:8080 user@8.8.8.8 \
    ssh -R 127.1:8080:127.1:8080 user@10.1.1.2

Конфигурация SSHD

Для гарантированного обхода ограничений фаервола можно в конфигурации SSHD демона /etc/ssh/sshd_config открыть сразу несколько портов, т.е. SSHD будет принимать запросы сразу по нескольким портам, например:

Port 22
Port 80
Port 67
Port 443

При таком раскладе можно будет спокойно юзать откуда душеньке угодно, с работы или комп. клуба, любые проги, играть в онлайн игры и т.д., а если SSHD поднят на домашнем ПК с динамическим ИП - так не беда, можно же вырулить через "Динамический ДНС" !:)

Итоги

SSH туннель с удалённым сервером также может быть полезен для проверки пропускной способности Интернет канала на удалённом сервере, а также очень рекомендуется при использовании точек Wi-Fi доступа в различных клубах, кафе и т.д. имхо трафик на таких общественных точках Wi-Fi доступа может запросто снифитца и вы рискуете попрощаться с доступом к своим акаунтам, электронным кошелькам и т.д.!

В сети можно нарыть бесплатные SSH аккаунты (Free Shell Accounts), но обычно для их получения нужно нырять в IRC сети и там вести переговоры с властелином SSH аккаунтов. Места выделяют маловато 200-500 МБ но, зато фрии.

Надеюсь статья была полезной и доступной для понимания.

Ссылки по теме

Олег Головский


Добавить комментарий

АХТУНГ! Все комменты гостей модерасятся модерастом.
  1. Мессаги исключительно рекламного содержания, либо содержащие только одни оценочные суждения типа "круто" ("отлично", "спасибо", "автор дебил" и т.п.) не публикуются;
  2. Злостным спамерам, пранкерам и прочей сетевой нечисти рекомендуем напрасно не тратить своего времени и удовлетворять свои больные фантазии на специализированных Интернет ресурсах!;
  3. Разумная обоснованная критика, замечания, дополнения приветствуются. Поля помеченные символом * обязательны к заполнению.


Защитный код
Обновить

Нет комментариев

Вы можете стать первым, кто добавит комментарий к этой записи.

Комментарии в блоге
Новое на форуме