Я думаю, что Вы желаете:
remote
кому: local
1234
на удаленном к порту 12345
на local
Вы, кажется, указываете на это local
находится позади NAT, происходящего на router
- это было бы то, почему необходимо настроить portforward так, чтобы router:22
вперед внутренне к local:22
Если я понял это правильно, командная строка, которую Вы хотите использовать на удаленном, на самом деле:
ssh -L 1234:local:12345 user@router
Ключ здесь - это, хотя это - a local
portforward (-L
== local
) разрешение имени хоста (т.е., local
в этом случае - второй параметр в 1234:local:12345
список), происходит на целевой машине - который в этом случае является local
.
В Вашем примере Вы имели 1234:router:12345
- что означает, что трафик спускается по туннелю ssh от remote
кому: local
; затем направляется от local
кому: router
- и поскольку Вы сказали, это требует, чтобы еще один portforward вернул трафик к local
.
Альтернатива была бы к ssh от local
кому: remote
, использование ssh -R 1234:local:12345
. Этому не был бы нужен portforward на router
, но Вы все еще имели бы 1234
на remote
передайте 12345
на local
. Очевидная оборотная сторона к этому - то, что Вы не можете инициировать это соединение от remote
, поскольку у Вас нет способа достигнуть local
.