Допустим, есть некий сервис (например 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
.