Обратный туннель SSH не работает для веб-сервера

У меня есть веб-приложение, работающее на Raspberry Pi, которое находится за NAT, и я пытаюсь создать туннель к серверу компании, чтобы получить к нему доступ из Интернета. Прямо сейчас я смог установить туннель, используя ssh -fN -R 192.168.0.28:54321:localhost:443 [email protected] (и сервер, и RPi в то время находятся в одной локальной сети), и выполнение curl -k https://192.168.0.28:54321 возвращает содержимое веб-страницы, размещенной в RPi, но только если я это сделаю с сервера. Я установил GatewayPorts yes и AllowTcpForwarding yes (в любом случае это значение по умолчанию).


person Christian Rodriguez    schedule 09.05.2017    source источник
comment
но только если я сделаю это с сервера Что именно произойдет, если вы попытаетесь это сделать с чего-то другого, кроме сервера? Какую конкретную команду вы выполняете и какие сообщения об ошибках или другое поведение вы получаете?   -  person Kenster    schedule 09.05.2017
comment
@Kenster Если я пытаюсь получить доступ из браузера, время ожидания истекает (ERR_CONNECTION_TIMED_OUT). Если я делаю это из curl (curl -k https://192.168.0.28:54321), он ничего не делает, даже не возвращает ошибку... даже не возвращает! Командная строка просто занята.   -  person Christian Rodriguez    schedule 09.05.2017
comment
@Kenster Хорошо, это заняло смехотворное количество времени, но время скручивания также истекло (выдает ошибку 7 - не удалось подключиться)   -  person Christian Rodriguez    schedule 10.05.2017
comment
Вы пробовали то же самое, когда они были в разных сетях? И работало ли оно тогда?   -  person codemania23    schedule 16.10.2020
comment
Любая идея о том, как пробивать отверстия, не открывая выделенный туннель? Я должен поддерживать тысячи устройств на одном сервере, и блокировка выделенного порта для каждого устройства невозможна.   -  person codemania23    schedule 16.10.2020


Ответы (1)


Это был брандмауэр на сервере, блокирующий порт. ¬¬

Чтобы открыть указанный порт, используется команда sudo iptables -I INPUT -p tcp --dport 54321 -j ACCEPT, которая говорит, что любое соединение, поступающее на TCP-порт 54321, должно быть принято.

person Christian Rodriguez    schedule 10.05.2017