1. Режим эмуляции Socks proxy в SSHДопустим, у нас есть рабочая станция в локальной сети за firewall'ом;
также имеется ssh-доступ на сервер в Интернете. Кроме ssh, никакой связи с внешним миром не имеется,
а очень хочется, например, подключиться к какому-нибудь jabber-серверу.
На рабочей станции запускаем простую команду:
ssh -D 5555 user@remotehost -f -N
, где -D 5555 - эмуляция SOCKS сервера через порт 5555
-f - работа в фоне, после аутентификации
-N - не запускать shell на удаленном хосте.
Теперь, указав в настройках XMPP-клиента (например, Pidgin'а) в качестве SOCKS5 прокси localhost:5555,
получим желаемый результат: Pidgin соединяется с сервером через внешний сервер.
2. Туннель ssh
Дано: сервер локальной сети ourproxy.provider.ru, доступный извне.
Требуется: получить из дома доступ к ресурсам внутри локальной сети, например, к интранет-серверу 10.10.5.1:80
Решение: выполнить на домашней машине команду, пробрасывающую туннель к искомому IP-адресу через ourproxy.provider.ru:
ssh -f -N user@ourproxy.provider.ru -L 8080:10.10.5.1:80
Опция -f говорит ssh, что после соединения нужно уйти в background.
Опция -N указывает, что никаких команд выполнять не нужно
Ключ -L означает, что соединения к localhost на порт 8080 нужно перенаправлять на 80 порт IP-адреса 10.10.5.1
Таким образом, набирая в браузере адрес http://localhost:8080, попадаем на нужный сервер.
3. Обратный туннель ssh
Дано: компьютер на работе, находящийся за firewall'ом и nat'ом; компьютер дома с доступом в интернет;
сервер ourproxy.provider.ru с работающим sshd, доступный обоим компьютерам.
Но в данном случае прямой доступ с ourproxy.provider.ru к рабочей машине отсутствует.
Требуется: получить из дома доступ к сервису sshd на рабочем компьютере.
Решение: на рабочей машине выполнить команду:
ssh -f -N user@ourproxy.provider.ru -R 12345:localhost:22
Опции -f и -N описаны несколькими строчками выше.
Ключ -R означает, что подключения к порту 12345 на ourproxy.provider.ru будут перенаправляться на 22 порт рабочего компьютера.
После выполнения этой команды с рабочей машины можно будет попасть на эту машину с ourproxy.provider.ru,
выполнив команду:
ssh -p 12345 user@locahost
По этому же принципу можно получить доступ к прочим ресурсам локальной сети. Вот еще один пример.
На рабочей машине:
ssh -f -N user@ourproxy.provider.ru -R 8080:10.10.5.1:80
На домашней машине:
ssh -f -N user@ourproxy.provider.ru -L localhost:8080:localhost:8080
Теперь, набрав в адресной строке браузера на домашнем компьютере http://localhost:8080,
получаем доступ к интранет-серверу за семью замками двумя firewall-ами.
Конечно же, это приводит к серьёзной бреши в корпоративной безопасности,
поэтому крайне не рекомендуется злоупотреблять этим советом.
URL: http://bappoy.pp.ru/2008/02/27/ssh-tunneling-tips.html http://bappoy.pp.ru/2008/06/09/socks-in-ssh.html
Обсуждается: http://www.opennet.ru/tips/info/1691.shtml