Статья давно не обновлялась, поэтому информация могла устареть.
В данной статье речь пойдёт о создании SSH-туннелей. Сначала нужно
разобраться что же вообще такое SSH-туннелирование, и зачем оно нужно. А
нужно оно вот зачем: a) Вам необходимо соединение между двумя машинами
по защищённому каналу b) Вам необходимо использовать ресурсы машины
(либо любого компьютера, который она видит) с серым (внутренним) IP
извне, посредством дополнительного сервера (или VDS), у которого есть
внешний (белый) статический IP-адрес. c) Другие ситуации (вообще это всё
описано в man ssh).
Задача: Перенаправлять все соединения с 8181 TCP-порт машины (A), имеющую внешний ип 89.89.89.89, на 80 TCP-порт машины (B), которая находится за NAT'ом, и имеет в локальной сети IP 10.10.10.10.
Решение:
Логинимся на (B) и выполняем след команду
$ ssh -R 8181:localhost:80 [email protected]
The authenticity of host '89.89.89.89 (89.89.89.89)' can't be established. DSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '89.89.89.89' (DSA) to the list of known hosts. Password:
Система спросит, нужно ли продолжать соединение -- ответьте ей
утвердительно (yes), и введите пароль пользователя root (или нужного)
машины 89.89.89.89.
Всё, теперь при запросе http://89.89.89.89:8181/ будет открываться http://10.10.10.10
Собственно, вместо localhost:80 можно было указать любой из ип, которые видны машине 10.10.10.10.
P.S. Для того, чтобы SSH-соединение не рвалось при закрытии подключения с вашего ПК к машине (B), нужно поставить это соединение на screen.
$ pkg install screen $ screen Жмём Enter, после выполнения действий, описанных в статье, жмём Ctrl+A, Ctrl+D, пишем exit, и радуемся жизни.