Вопрос или проблема
У меня настроен обратный SSH-туннель, который соединяется с моим сервером. Веб-страницу удаленного сервера можно получить через localhost:8080 на моем сервере (только что протестировано через curl). Я хочу сделать этот сервис доступным для остальной сети. Как это сделать? UFW неактивен, поэтому я не думаю, что это причина, по которой я не могу подключиться из сети.
Перенаправление портов с удаленных машин в SSH-туннели отключено по умолчанию в Ubuntu 18.04, оно будет перенаправлять запросы только с localhost
, как вы проверяли.
Чтобы разрешить удаленным машинам из сети доступ к вашему SSH-туннелю, вам нужно отредактировать настройки сервера SSH:
echo 'GatewayPorts yes' | sudo tee -a /etc/ssh/sshd_config
(вы можете заметить, что в этом файле есть закомментированная строка #GatewayPorts no
, так как это значение по умолчанию)
Теперь перезапустите службу SSH:
sudo service ssh restart
Теперь перенаправление портов в ваш SSH-туннель должно работать, когда запрашивается с удаленных хостов
Ответ или решение
Чтобы обеспечить доступ к SSH-туннелю из сети на сервере с Ubuntu 18.04 LTS, необходимо выполнить несколько шагов. Данный процесс включает в себя настройку конфигурации SSH-сервера, что позволит удалённым устройствам подключаться к вашему туннелю. Учитывая вашу текущую настройку и то, что UFW не активен, давайте подробно рассмотрим необходимые действия.
Шаг 1: Изменение конфигурации SSH-сервера
Теперь, по умолчанию, SSH-сервер разрешает переадресацию только запросов, исходящих от localhost
. Чтобы разрешить подключение из других сетевых устройств, необходимо изменить конфигурацию SSH-сервера. Для этого выполните следующие действия:
-
Откройте терминал на вашем сервере.
-
Введите следующую команду для добавления настроек в файл конфигурации SSH:
echo 'GatewayPorts yes' | sudo tee -a /etc/ssh/sshd_config
Эта команда добавляет строку
GatewayPorts yes
в конец файлаsshd_config
, что разрешает подключение к SSH-туннелям с других устройств в сети. -
Если вы захотите убедиться, что данное изменения применилось, вы можете открыть файл
sshd_config
в текстовом редакторе, например, с помощьюnano
:sudo nano /etc/ssh/sshd_config
Найдите строку
#GatewayPorts no
и убедитесь, что под ней теперь естьGatewayPorts yes
.
Шаг 2: Перезагрузка SSH-сервера
После внесения изменений в конфигурацию, необходимо перезагрузить SSH-сервис для применения новых настроек. Выполните следующую команду:
sudo service ssh restart
Это обеспечит, что ваш SSH-сервер теперь будет обрабатывать входящие соединения на заданные порты, не ограничиваясь только локальными запросами.
Шаг 3: Проверка доступности сервиса
Теперь, когда конфигурация выполнена и сервер перезагружен, вам необходимо протестировать доступ к вашему сервису из сети. Используйте любой SSH-клиент (например, PuTTY или встроенный терминал на других Linux-устройствах) с указанием IP-адреса вашего сервера и порта (например, 8080). Команда для доступа к туннелю может выглядеть следующим образом:
curl http://<IP вашего сервера>:8080
Если все корректно настроено, вы должны получить ответ от запущенного сервера, что подтвердит успешное подключение.
Заключение
Теперь ваш SSH-туннель доступен для других устройств в сети благодаря изменению параметра GatewayPorts
в конфигурации SSH-сервера. Это простое, но мощное изменение позволяет эффективно управлять доступом к вашим туннелям, оставаясь при этом в пределах безопасной среды. Не забывайте периодически проверять настройки безопасности вашего сервера, даже если UFW у вас отключен, для защиты от возможных уязвимостей.