вторник, 11 августа 2009 г.

Создание шифрованного туннеля с помощью SSH

SSH-туннелирование позволяет прозрачным для клиента образом перенаправить сетевой траффик с одного хоста на другой. Самое приятное в этом процессе то, что все передаваемые через туннель данные шифруются. Чаще всего SSH-туннелирование применяют в следующих ситуациях:
  • Имеется хост, прямого доступа к которому нет. Тем не менее, есть SSH-доступ к "соседней" машине с которой этот недоступный извне хост - доступен. Пример: веб-сервер, находящийся за брандмауэром.
  • Удаленный хост доступен напрямую, но хотелось бы организовать прозрачное для туннелируемых приложений шифрование данных.
С обеими задачами SSH справляется "на отлично". Приятно также и то, что туннель создается всего одной командой:
ssh -f foo@bar.com -L 127.0.0.1:8080:web-server:80 -N
В этом примере подразумевается, что у пользователя foo имеется SSH-аккаунт на сервере bar.com. Далее возможны два варианта: либо веб-сервер, упомянутый в примере, не доступен снаружи (но с bar.com к нему подключиться можно), либо веб-сервер доступен, но требуется шифровать данные на участке между локальной машиной и сервером bar.com. В конечном итоге, SSH будет слушать порт 8080 на интерфейсе 127.0.0.1 и пересылать данные на 80-й порт хоста web-server "от имени" сервера bar.com. В результате, набрав в браузере http://localhost:8080 мы фактически попадем на http://web-server:80

При создании туннеля удобно использовать опции -f и -N. Первая опция переводит ssh-клиент в фоновый режим, а вторая - инструктирует его работать в не-командном режиме (т.е. режиме только для туннелирования данных).

Комментариев нет:

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