Как туннелировать порт от сервера за брандмауэром к удаленному серверу, который разрешает соединения через ssh?

У меня есть сценарий, где мне нужно открыть порт для сервера за провайдером, который, кажется, блокирует трафик. В этом случае у меня есть выделенный сервер удаленно, что я могу ssh и использовать любые порты, которые я хочу. Мое желание состоит в том, чтобы подключиться через ssh с сервера за этим брандмауэром к выделенному серверу, а затем открыть порт, как правило, для доступа клиента этого другого приложения по желанию.

Я думал, что это так же просто, как с сервера за брандмауэром провайдера:

ssh username@remote_server_ip -R remote_server_ip:12345:localhost:12345

А затем просто подключиться с клиентским программным обеспечением к remoteserver:12345 в качестве настройки сервера.

Кроме того, у меня есть sshd_config установлен в GatewayPorts clientspecified и когда я проверяю netstat -tln | grep 12345 на удаленном сервере я вижу: активные интернет-соединения (только серверы)

Proto Recv-Q Send-Q Local Address                Foreign Address             State      
tcp        0      0 remote_server_ip:12345       0.0.0.0:*                   LISTEN 

К сожалению, это, похоже, не работает. Я подозреваю, что я получаю что-то от аргументов ssh. Есть идеи?

1 ответ

Если я правильно понимаю, вы хотите создать ssh-туннель на своей машине за провайдером и предоставить его сервис через порт на SSH-сервере.

Если это так, ваша командная строка выглядит правильно. Я делаю что-то подобное.

Вы включили Gatewayports в конфигурации sshd, так что все, что хорошо, если вы этого не сделали, вы можете привязать порт только к петлевому адресу 127.0.0.1 на сервере ssh.

Быстрое примечание, мне пришлось перезагрузить мой ssh-сервер, чтобы опция gatewayport начала работать. Перезапуска службы sshd должно быть достаточно, но у меня это не сработало.

Я вижу, что вы не указываете порт для сервера ssh, что означает, что вы используете порт 22, ваш провайдер может каким-то образом закаляться с ним.

Еще одна вещь, к какой бы службе вы не обращались на сервере за ISP, убедитесь, что его порт привязан к интерфейсу 127.0.0.1, потому что именно так вы указали свой туннель. Кроме того, проверьте, что ваша служба принимает соединения от этого интерфейса, и дважды проверьте порт, на котором он работает.

@barlop -R 127.0.0.1:12345:localhost:12345 будет неправильным, служба будет доступна только для тех, кто подключается к адаптеру обратной связи.

Но, читая пост barlop, я кое-что понял, имейте в виду, что при настройке команды порт, который открывается на сервере ssh, будет привязан к тому же IP-адресу, на котором работает ваш SSH-сервер. Это означает, что служба подключена к Интернету, может быть, это то, что вам нужно, но если ppl, которому нужна служба, подключается из локальной сети, вам нужно привязать этот порт к IP-адресу локальной сети ssh-сервера. ТАКЖЕ ВЫ УВЕРЕНЫ, что ssh-сервер, к которому вы подключаетесь, не находится за брандмауэром, который перенаправляет порт 22 на сервер? если это так, это означает, что вы просите сервер ssh открыть порт на ip, который принадлежит брандмауэру, что, очевидно, невозможно.

В этом senario вам нужно было бы открыть порт на собственной локальной сети ssh-сервера, тогда локальные машины могли бы подключиться непосредственно к нему, если вы хотите предоставить службу Интернету, то вам нужно перенаправить порт с брандмауэра на порт. Вы открыли на сервере ssh.

Просто пытаясь охватить все, трудно получить четкое представление о том, что происходит, без дополнительной информации об инфраструктуре.

Awww удовольствия от общения.

Другие вопросы по тегам