Как мне переадресовать обмен данными через веб-сокет через промежуточный сервер?

Я пытаюсь подключить сервер веб-сокета (Linux-машина) и клиент (веб-браузер) через промежуточный сервер (размещенный на экземпляре AWS EC2). Экземпляр EC2 предоставляет общедоступный IP-адрес, на который могут ссылаться сервер и клиент websocket.

Мой клиент подключается к ws: // : , где СЕРВЕР - это адрес моего экземпляра EC2, а ПОРТ - произвольный порт, который я открыл для переадресации портов (например, 9111 ).

На websocket, я выполняю следующую команду:

  /usr/bin/ssh -f -N -i $KEY -l ubuntu \
                 -R $PORT:127.0.0.1:9090 \
                 -L 9090:$SERVER:$PORT \
                  $SERVER

Где $ KEY - это закрытый ключ для EC2, а 9090 - это порт, который использует мой сервер websocket. Я настроил демон ssh своего экземпляра EC2 для включения портов шлюза, и переадресация портов работает нормально.

Проблема возникает, когда я пытаюсь запустить свой сервер веб-сокетов - я получаю ошибку Адрес уже используется , потому что, по-видимому, я не могу запустить сервер веб-сокетов на порту, который я пересылаю. Разве это не стандартное занятие? Что я делаю не так?

Спасибо!

1
задан 21 July 2017 в 23:42
1 ответ

Ваш параметр '-L 9090' для SSH открывает прослушиватель на порту 9090, что конфликтует с вашим сервером веб-сокетов. Опция -R должна быть достаточной, и прямое соединение будет двунаправленным, вам не нужно настраивать «обратный маршрут» с помощью -L.

Вам может потребоваться включить опцию GatewayPorts на вашем демоне EC2 SSH чтобы иметь возможность настраивать порты с помощью -R, которые принимают соединения с любого IP-адреса в дополнение к любым изменениям межсетевого экрана.

1
ответ дан 3 December 2019 в 23:27

Теги

Похожие вопросы