ssh -R тогда выставить локальный порт через HTTP?
Вот мой сценарий, у меня есть две машины, A и B. A находится за VPN, поэтому B не может добраться до A. У меня есть веб-сервер:
machine_a$ curl localhost:8088
"hello from machine_a"
Я выполнил удаленный туннель SSH следующим образом:
machine_a$ ssh -R 8088:machine_a:8088 machine_b -N &
На машине B я могу убедиться, что туннель действительно открыт:
machine_b$ curl localhost:8088
"hello from machine_a"
Как мне заставить machine_b прослушивать HTTP-трафик на 8089 и маршрутизировать /pipe/ что-либо на этот локально доступный порт 8088, который, в свою очередь, является удаленным портом для HTTP-сервера на machine_a?
(Также я установил фиктивный сервер на machine_b:8089 и убедился, что он открыт.
2 ответа
С socat это служит моим целям:
machine_b$ socat TCP-LISTEN:8089,su=nobody,fork,reuseaddr TCP-CONNECT:127.0.0.1:8088
Это говорит socat прослушивать TCP-порт 8889 и подключать его к локальному 8088. Он работает как nobody
пользователь, для лучшей безопасности. Параметр fork означает, что он будет пересматривать входящий порт, чтобы он не блокировался.
вылезая из моей машины:
my_machine$ curl machine_b:8089
"hello from machine_a"