Предположим есть задача: получать доступ на сервер с компьютеров, у которых нет прямого доступа к серверу через компьютер-посредник. Например, попасть на 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-сессию для набора команд в теринале.
Если с localhost до httpserver есть прямая связь на порт 80, то на localhost должен работать демон sshd и необходимо запустить команду:
$ ssh -g -f -N -L 9999:httpserver:80 user@localhost
См. также:

4 comments:
На opennet.ru есть статья "Ограничение возможностей ssh туннеля при помощи iptables".
Попробовал второй вариант - не очень работает. в Браузере надо писать IP_of_localhost:9999 ?
Попробовал второй вариант - не очень работает. в Браузере надо писать IP_of_localhost:9999 ?
Да. С ПК, на котором запущен браузер, должен быть доступен порт 9999 на IP_of_localhost. Можно проверить и телнетом с ПК: telnet IP_of_localhost 9999
Отправить комментарий