Допустим, есть некий сервис (например ssh), который слушает порт на машине Б с серым адресом. Я хочу достучаться до него с машины А, имея в распоряжении сервер с белым адресом.
Находясь на машине Б, выполняю команду: ssh -NR 13020:localhost:22 пользователь@ip_сервера
. Теперь все запросы на 13020-й порт сервера должны попадать на 22-й порт машины Б, так? Кажется, так всё и происходит: находясь на сервере, я могу ввести ssh пользователь@localhost -p 13020
, и попадаю на машину Б. Но если находясь на машине А ввести ssh пользователь@ip_сервера -p 13020
— ничего не получается, пишет Connection refused
. Почему так?
Но теперь, находясь на машине А, пробрасываю локальный порт на сервер: ssh -NL 15020:localhost:13020 пользователь@ip_сервера
. Пробую ssh пользователь@localhost -p 15020
— работает! Кажется, всё хорошо. Но работает только ssh, подключиться таким образом к vnc-серверу у меня не получается. Магия!