В данной статье будет описано как строить SSH–туннели с помощью PuTTY.
1. Локальный проброс порта
Рассмотрим следующую ситуацию. Мы находимся внутри корпоративной сети, у нашего компьютера адрес 192.168.0.2, доступ во внешний мир полностью закрыт (то есть никакого NAT–а, proxy и т.п.). Влиять на политику ограничения доступа у нас возможности нет, но зато есть SSH–доступ на один из серверов с маршрутизируемым IP–адресом, который доступен из Интернет. Внутренний адрес этого сервера, пусть будет для примера 192.168.0.3. Структура сети изображена на рисунке:
Предположим, что нам очень нужно подключиться, к примеру, по SSH на некоторый удалённый сервер с IP–адресом 212.212.212.212 где–то далеко в Интернет. Для этого запускаем PuTTY, создаём SSH–подключение к серверу 192.168.0.3 (далее по тексту SSH–сессия 1), идём в пункт Tunnels:
и указываем, что локальный порт 2222 нашего компьютера должен быть поставлен в соответствие порту 22 на сервере с IP–адресом 212.212.212.212. Далее жмём кнопку «Open», авторизуемся на сервере 192.168.0.3. Затем создаём ещё одно подключение (далее по тексту SSH–сессия 2), но уже на localhost, порт 2222 и жмём кнопку «Open»:
В результате SSH–сессия 2 будет туннелироваться (т.е. будет установлена внутри ранее установленной SSH–сессии 1). Для удалённого сервера 212.212.212.212 всё будет выглядеть так, как будто к нему подключается 111.111.111.111:
2. Удалённый проброс порта
В этом случае подключение внутри SSH–туннеля устанавливается в другую сторону — от удалённого сервера на наш локальный компьютер. Может быть полезно, если требуется открыть доступ к локальным сервисам нашего компьютера. Рассмотрим ту же сеть, что и в пункте 1, но для простоты предположим, что теперь у нас есть NAT:
Здесь уже у нас есть возможность подключаться через 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 следующим образом:
В результате после успешной авторизации на 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 увидеть наш рабочий стол:
3. Socks–proxy
В этом случае мы можем использовать сервер с SSH–демоном как промежуточный (proxy). Схема сети как в случае #1 (без NAT и штатных прокси):
Чтобы заставить PuTTY исполнять роль socks–прокси, нужно параметры SSH–сессии с 192.168.0.2 на 192.168.0.3 изменить следующим образом:
В результате после успешной авторизации со стороны клиента можно будет наблюдать следующее:
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, и указываем ему использовать наш прокси:
Теперь все запросы от браузера будут проходить через сервер 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/