1

Вот мой сценарий, у меня есть две машины, 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 ответа2

3

С 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"

2
nc -l 8089 | nc localhost 8088

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .