SSH удаленная пересылка успешна, но тест с удаленного сайта не работает.

Вопрос или проблема

Мне понадобилось некоторое время, чтобы разобраться в этом, но наконец я заставил удаленную портовую пересылку работать с ssh следующим образом:

ssh -N -i /etc/ssh/id_rsa [email protected] -R 8080:localhost:80 -C -v

Локальный сервер использует закрытый ключ для подключения к удаленному серверу, на котором настроен открытый ключ. Успешная аутентификация, ошибок в журнале нет. Последняя строка, которую выводит ssh:

debug1: remote forward success for: listen 8080, connect localhost:80

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

Однако ничего не происходит – по-прежнему вижу эту строку:

debug1: remote forward success for: listen 8080, connect localhost:80

Если я тестирую локально на удаленном сервере, используя http://127.0.0.1:8080, это работает отлично.

ПРИМЕЧАЕТЕ: Следующее установлено в sshd_config на удаленном сервере:

  1. AllowTcpForwarding yes
  2. GatewayPorts yes

Не уверен, что я упускаю…

Цитата из man ssh

По умолчанию, сокеты TCP на сервере будут привязаны только к интерфейсу обратной связи. Это можно переопределить, указав bind_address. Пустой bind_address или адрес ‘*’ указывают, что удаленный сокет должен слушать на всех интерфейсах. Указание удаленного bind_address будет успешно только в том случае, если опция GatewayPorts сервера включена (см. sshd_config(5)).

Kakskdkdzkmswmnenenekxisjsjwkekxj dnenejejdixidkenenensjdjxjxxjdnensnwwnsnsjxjxjxjdjsnsnsjsjxjxkaoweiethwjakanznc

Ответ или решение

Проблема с удалённым портом Forwarding SSH: Ответ и возможные решения

Вы столкнулись с проблемой, когда удалённый порт Forwarding в SSH работает корректно (вы видите сообщение debug1: remote forward success for: listen 8080, connect localhost:80), но доступ к нему извне не удаётся. Рассмотрим возможные причины этой проблемы и способы их устранения.

1. Проверка конфигурации sshd_config

Как вы упомянули, у вас установлены следующие параметры в файле конфигурации sshd_config на удалённом сервере:

AllowTcpForwarding yes
GatewayPorts yes

Эти параметры необходимы для успешной работы удалённого порт-форвардинга. Убедитесь, что они действительно прописаны правильно, и перезапустите службу SSH, чтобы изменения вступили в силу:

sudo systemctl restart sshd

2. Указание адреса привязки

При использовании -R в вашей команде SSH не указывается адрес, что может означать привязку к локальному интерфейсу (т.е. localhost), который недоступен снаружи. Чтобы разрешить доступ к порту 8080 извне, вы можете явно указать, что порт должен слушать на всех интерфейсах, добавив 0.0.0.0:

ssh -N -i /etc/ssh/id_rsa [email protected] -R 0.0.0.0:8080:localhost:80 -C -v

3. Проверка брандмауэра

Убедитесь, что на удалённом сервере нет правил брандмауэра, блокирующих подключение к порту 8080. Например, если на сервере используется ufw или iptables, выполните следующие команды, чтобы проверить и изменить настройки:

Для ufw:

sudo ufw allow 8080

Для iptables:

sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT

4. Проблемы с доступом к сети

Если сервер расположен за NAT или в облаке, проверьте настройки вашей сети. Убедитесь, что внешний IP-адрес вашего удалённого сервера доступен и что все необходимые маршруты настроены.

5. Тестирование доступа

После внесения изменений, попробуйте снова получить доступ к http://www.somewhere.com:8080 с другого устройства в сети. Используйте команды curl или wget, чтобы исключить проблемы с браузером:

curl http://www.somewhere.com:8080

Заключение

Если вы последовали всем вышеуказанным шагам, но проблема все же осталась, рекомендуется проверить журналы SSH для получения дополнительной информации и устранения неполадок. Логи можно посмотреть с помощью команды:

sudo journalctl -u sshd

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

Успехов в решении проблемы!

Оцените материал
Добавить комментарий

Капча загружается...