Используйте туннель SSH для доступа к веб-приложению по телефону через посредника

tl;dr: A -> B и C -> B работает. Как заставить A - >C работать?

у меня 3 узла

A. A local machine
B. A middle-man
C. A phone with a webapp running on port 333

A и C можно по SSH к Б. Таким образом, А->B и C->B работает нормально, но А -> C не работает.





На B, я могу получить доступ к этому веб-приложение на http://localhost:3344 после создания туннеля из C:

machine-c$ /usr/bin/ssh -f -N -T -R 3344:localhost:333 user@machine-b





Я бы подумал, что с вышеуказанным туннелем работает все, что мне нужно, это туннель из A - >B вот так:

machine-a$ /usr/bin/ssh -f -N -T -L 9999:machine-b:3344 user@machine-b

Я вижу следующее сообщение:

Local connections to LOCALHOST:9999 forwarded to remote address machine-b:3344

но доступ к localhost: 9999 зависает со следующим набором повторяющихся сообщений:

debug2: channel 3: zombie
debug2: channel 3: garbage collecting
debug1: channel 3: free: direct-tcpip: listening port 9999 for machine-b port 3344, connect from ::1 port 24626 to ::1 port 9999, nchannels 4
debug1: Connection to port 9999 forwarding to machine-b port 3344 requested.
debug2: fd 10 setting TCP_NODELAY
debug1: channel 3: new [direct-tcpip]
channel 3: open failed: connect failed: Operation timed out

не уверен, что это актуально, но поскольку A - > B работает, я также настроил обратный туннель, чтобы B - > A тоже работал. То же самое для B - > C. Итак, в целом следующие работы:

A - > B

machine-a$  ssh user@machine-b

B - > A (сначала требуется обратный туннель SSH от A - >B)

machine-a$  ssh -f -N -T user@machine-b -R1234:localhost:22
machine-b$  ssh -p 1234 user@machine-a 

то же самое было сделано для C->B


как настроить SSH-туннель от A до C (через B?) так что я могу открыть это приложение на С помощью localhost:3344 ?







Я посмотрел на следующие вопросы, но не могу обернуть голову вокруг того, что нужно:

SSH как socks прокси через несколько хостов

вперед СШ движение через Среднюю машину

туннель SSH через несколько прыжков

2
задан Community
30.03.2023 16:29 Количество просмотров материала 3335
Распечатать страницу

1 ответ

у меня есть аналогичная установка на месте, и она работает нормально. Разницу я заметил, в вашей машине-команда СШ вы используете 9999:machine-b:3344 в то время как я использую 9999:localhost:3344. Ваш путь не работает для меня либо, однако он не производит те же ошибки. Для полноты картины, вот что я получаю:

debug1: Connecting to localhost [::1] port 9999.
debug1: Connection established.
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.5p1 Debian-6
channel 2: open failed: connect failed: Connection refused
ssh_exchange_identification: Connection closed by remote host`

следующие команды делают трюк для меня:

machine-c$  ssh -f -N -T -R 3344:localhost:333 user@machine-b

теперь на машине-a:

machine-a$  ssh -f -N -T -L 9999:localhost:3344 user@machine-b

как у меня нет ничего работает на машине-с порт 333, Я заменил его на 22 и проверяю что туннель работает просто подключившись через ssh:

machine-a$  ssh -p 9999 user@localhost
1
отвечен TheDC 2023-04-01 00:17

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх