пятница, Март 27, 2009

SSH-туннель. Примеры использования.

Ещё раз про туннели через ssh.

Предположим есть задача: получать доступ на сервер с компьютеров, у которых нет прямого доступа к серверу через компьютер-посредник. Например, попасть на web-страничку сервера httpserver (сервер) из браузера клиентов через localhost (посредник):
http://dns_name_of_server_localhost:9999/

Эту задачу можно решить с помощью ssh-туннеля:

Вариант 1
Если с localhost до httpserver нет прямой связи, т.е. порт 80 не доступен, то на localhost необходимо запустить команду:
$ ssh -g -f -N -L 9999:httpserver:80 user@bufhost
где
  • bufhost - это сервер, с которого доступен порт httpserver:80, и на котором запущен демон sshd
  • 9999 - порт на localhost:9999, с которым будет связана точка доступа httpserver:80
  • -g - позволить соединения на 9999 не только процессам с localhost, но и другим компьютерам в сети.
  • -f - запустить в фоновом режиме
  • -N - не организовывать ssh-сессию для набора команд в теринале.
Вариант 2
Если с localhost до httpserver есть прямая связь на порт 80, то на localhost должен работать демон sshd и необходимо запустить команду:
$ ssh -g -f -N -L 9999:httpserver:80 user@localhost


Схема создана в программе Dia

См. также:

4 comments:

Смолов Илья комментирует...

На opennet.ru есть статья "Ограничение возможностей ssh туннеля при помощи iptables".

Dumka комментирует...

Попробовал второй вариант - не очень работает. в Браузере надо писать IP_of_localhost:9999 ?

Dumka комментирует...

Попробовал второй вариант - не очень работает. в Браузере надо писать IP_of_localhost:9999 ?

r1mson комментирует...

Да. С ПК, на котором запущен браузер, должен быть доступен порт 9999 на IP_of_localhost. Можно проверить и телнетом с ПК: telnet IP_of_localhost 9999