Создание SSH-туннелей с помощью PuTTY

В данной статье будет описано как строить SSH–туннели с помощью PuTTY.

1. Локальный проброс порта

Рассмотрим следующую ситуацию. Мы находимся внутри корпоративной сети, у нашего компьютера адрес 192.168.0.2, доступ во внешний мир полностью закрыт (то есть никакого NAT–а, proxy и т.п.). Влиять на политику ограничения доступа у нас возможности нет, но зато есть SSH–доступ на один из серверов с маршрутизируемым IP–адресом, который доступен из Интернет. Внутренний адрес этого сервера, пусть будет для примера 192.168.0.3. Структура сети изображена на рисунке:
PuTTY SSH Tunnels Schema
Предположим, что нам очень нужно подключиться, к примеру, по SSH на некоторый удалённый сервер с IP–адресом 212.212.212.212 где–то далеко в Интернет. Для этого запускаем PuTTY, создаём SSH–подключение к серверу 192.168.0.3 (далее по тексту SSH–сессия 1), идём в пункт Tunnels:
PuTTY SSH Tunnels Config
и указываем, что локальный порт 2222 нашего компьютера должен быть поставлен в соответствие порту 22 на сервере с IP–адресом 212.212.212.212. Далее жмём кнопку «Open», авторизуемся на сервере 192.168.0.3. Затем создаём ещё одно подключение (далее по тексту SSH–сессия 2), но уже на localhost, порт 2222 и жмём кнопку «Open»:
PuTTY SSH Tunnels Connect
В результате SSH–сессия 2 будет туннелироваться (т.е. будет установлена внутри ранее установленной SSH–сессии 1). Для удалённого сервера 212.212.212.212 всё будет выглядеть так, как будто к нему подключается 111.111.111.111:
PuTTY SSH Tunnels Schema Tunnel

2. Удалённый проброс порта

В этом случае подключение внутри SSH–туннеля устанавливается в другую сторону — от удалённого сервера на наш локальный компьютер. Может быть полезно, если требуется открыть доступ к локальным сервисам нашего компьютера. Рассмотрим ту же сеть, что и в пункте 1, но для простоты предположим, что теперь у нас есть NAT:
PuTTY SSH Tunnels Schema Remote
Здесь уже у нас есть возможность подключаться через SSH напрямую к 212.212.212.212 благодаря наличию NAT–а. А вот 212.212.212.212 подключиться на 192.168.0.2 без специальных ухищрений, понятное дело, не сможет, т.к. 192.168.0.2 не подключён к Интернет непосредственно. Предположим, что пользователю, сидящему под X–ами на 212.212.212.212 нужно через remote desktop попасть на наш компьютер 192.168.0.2. Для этого в SSH–сеансе подключения с 192.168.0.2 на 212.212.212.212 нужно изменить настройки в разделе Tunnels следующим образом:
PuTTY SSH Tunnels Conf
В результате после успешной авторизации на 212.212.212.212 можно увидеть следующее:

#lsof -i -nP | grep 3333
sshd  18598   avz   11u  IPv4 592868957   TCP 127.0.0.1:3333 (LISTEN)

То есть sshd ожидает подключений на TCP–порт 3333, которые затем по SSH–туннелю будут перенаправлены на 192.168.0.2 порт 3389. И юзер сидящий за 212.212.212.212 сможет с помощью rdesktop увидеть наш рабочий стол:
PuTTY SSH Tunnels Schema Remote Tunnel

3. Socks–proxy

В этом случае мы можем использовать сервер с SSH–демоном как промежуточный (proxy). Схема сети как в случае #1 (без NAT и штатных прокси):
PuTTY SSH Tunnels Config Socks Schema
Чтобы заставить PuTTY исполнять роль socks–прокси, нужно параметры SSH–сессии с 192.168.0.2 на 192.168.0.3 изменить следующим образом:
PuTTY SSH Tunnels Config Dynamic
В результате после успешной авторизации со стороны клиента можно будет наблюдать следующее:

C:\>netstat -ano | find "1080"
  TCP    127.0.0.1:1080     0.0.0.0:0      LISTENING       2392
C:\>tasklist | find /i "2392"
putty.exe                2392 Console        0             5420 КБ

То есть putty, выполняющийся с PID–ом 2392, начинает слушать порт 1080, ожидая подключений. Далее бёрем любое приложение, умеющее работать с SOCKS–прокси, например Firefox, и указываем ему использовать наш прокси:
PuTTY SSH Tunnels Firefox
Теперь все запросы от браузера будут проходить через сервер 192.168.0.3. В логах веб–сайтов, по которым мы таким образом будем ходить, будет отображаться внешний IP–адрес нашего сервера — 111.111.111.111.

P.S. Из help–файла Putty 0.58:

Question A.10.3: What does «PuTTY» mean?

It’s the name of a popular SSH and Telnet client. Any other meaning is in the eye of the beholder. It’s been rumoured that «PuTTY» is the antonym of «getty», or that it’s the stuff that makes your Windows useful… 🙂

Источник : http://putty.org.ru/articles/putty-ssh-tunnels.html

ssh, как известно, очень мощный инструмент: помимо удобного доступа к терминалу удаленных машин и передачи файлов, ssh еще умеет делать туннели. Один из небольших примеров мы разберем сегодня с Вами — при помощи сервера с ssh сделаем ssh-туннель, к которому подключимся и будем использовать в качестве socks-прокси. Сегодня мы будем делать это в Windows, объектом следующей статьи будет проделывание того же самого, но уже нативно, в Linux.

Поехали. Открываем putty, вписываем адрес нашего ssh сервера:

Едем дальше. Настраиваем кодировку для правильного отображение символов в терминале. Если работать в нем не нужно, и соединение будет использоваться только для туннеля — то делать это необязательно.

Следующим шагом будет настройка самого туннеля. Идем во вкладку «Connection» -> «SSH» -> «Tunnels». В «Source port» вбиваем порт 3128, ниже поля «Destination» ставите кнопку «Dynamic». См. скриншот.

После проделывание вышеуказанных операций порт отобразится в окошке «Fowarded ports».

На этом конфигурация Putty завершена. При желании, настройки можно сохранить в первой вкладке «Session», что бы каждый раз при подключении заново не вбивать их. Нажимаем «Open» и вводим свои учетные данные в системе. Далее нужно настроить браузер. В моем случае это Firefox. Идем в «Инструменты» -> «Настройки» -> «Дополнительно» -> «Сеть» -> «Настроить» и вписываем туда SOCKS прокси и порт 3128.

Всё, подтверждаем сохранение настроек и пользуемся. Удачи!

Источник : http://erdees.ru/it/socks5-proksi-cherez-ssh-tunnel-pri-pomoshhi-putty/

Запись опубликована в рубрике *Lan&Wan, *Unix,*Linux, *Windows. Добавьте в закладки постоянную ссылку.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Я не спамер This plugin created by Alexei91