Вопрос или проблема
С сервера 192.168.0.1 я хочу достичь сервера 192.168.0.2 на порту 80.
Сервер 192.168.0.2 может достигать 192.168.0.1, но 192.168.0.1 не может достичь 192.168.0.2 (брандмауэр).
Я настроил обратный прокси, введя следующую команду на 192.168.0.2:
ssh -f -N -T -R0.0.0.0:80:localhost:80 192.168.0.1
Теперь 192.168.0.1 может достигать 192.168.0.2 с помощью следующей команды:
wget localhost:80
Тем не менее, я хочу иметь возможность достигать 192.168.0.2, вводя
wget 192.168.0.2:80
Это возможно, без изменения DNS?
Вам нужно определить GatewayPorts
в sshd_config
, иначе *
или 0.0.0.0
будет привязываться только к интерфейсу локальной петли.
Также обратите внимание, что
Привилегированные порты могут быть перенаправлены только при входе под пользователем root на удаленной машине.
Из страницы руководства для ssh
:
По умолчанию, сокеты TCP на сервере будут привязаны только к интерфейсу локальной петли. Это можно переопределить, указав
bind_address
. Пустой bind_address или адрес ‘*’ указывает на то, что удаленный сокет должен прослушивать все интерфейсы. Указание удаленногоbind_address
будет успешным только в том случае, если опция GatewayPorts сервера включена (см. sshd_config(5)).
Я испытывал трудности с этой проблемой на Ubuntu 14.04 (я пробовал как GatewayPorts clientspecified
, так и GatewayPorts yes
в /etc/ssh/sshd_config
).
Вместо этого, добавление этого в мой sshd_config
сработало:
Match User !root
GatewayPorts yes
То есть, мне нужно было указать пользователя, к которому будет применимо это правило.
Ответ или решение
SSH Реверсный Туннель с Удалённым IP
Введение
В современном мире сетевых технологий, многие задачи могут оказаться неразрешимыми из-за ограничений брандмауэров и сетевых настроек. Одной из распространённых задач является необходимость установить соединение с удалённым сервером, когда доступ к нему ограничен. В данной статье мы рассмотрим, как настроить SSH реверсный туннель для доступа к серверу с IP-адресом 192.168.0.2 через сервер 192.168.0.1, используя свойство GatewayPorts
в конфигурации SSH.
Проблема
Сервер 192.168.0.1 может обращаться к 192.168.0.2, но в обратном направлении доступ ограничен из-за настроек брандмауэра. Для решения этой проблемы вы настроили реверсный туннель, выполнив следующую команду на сервере 192.168.0.2:
ssh -f -N -T -R 0.0.0.0:80:localhost:80 192.168.0.1
Эта команда позволяет серверу 192.168.0.1 обращаться к 192.168.0.2 через локальный адрес, используя wget localhost:80
. Тем не менее, вы хотите, чтобы доступ осуществлялся и по IP-адресу 192.168.0.2, например, через wget 192.168.0.2:80
.
Решение
Для того чтобы это реализовать, требуется корректно настроить параметр GatewayPorts
в файле конфигурации SSH (/etc/ssh/sshd_config
) на сервере 192.168.0.1, который будет принимать соединения. Этот параметр управляет, на каком IP-адресе будет слушать сокет. По умолчанию он будет привязан только к локальному интерфейсу, что ограничит доступ к проксируемому сервису.
-
Редактирование
sshd_config
: откройте файл конфигурации SSH:sudo nano /etc/ssh/sshd_config
-
Добавьте или измените следующую строку: Убедитесь, что параметр
GatewayPorts
разрешает привязку к другим интерфейсам:GatewayPorts yes
Альтернативно, если требуется установить более строгие правила, вы можете использовать следующую конструкцию:
Match User !root GatewayPorts yes
Это позволит пользователям, не имеющим привилегий root, также использовать обратный туннель, если они не являются пользователями root.
-
Перезапустите SSH-сервер:
После внесения изменений необходимо перезапустить SSH-сервер для применения новой конфигурации:
sudo systemctl restart ssh
-
Настройка реверсного туннеля: Теперь вы можете снова выполнить команду на сервере 192.168.0.2, чтобы установить реверсный туннель:
ssh -f -N -T -R 0.0.0.0:80:localhost:80 192.168.0.1
Проверка
После выполнения всех вышеперечисленных шагов, вы сможете подключится к 192.168.0.2 с сервера 192.168.0.1 через:
wget 192.168.0.2:80
Это подтвердит, что реверсный туннель успешно работает и соединение осуществимо по IP-адресу.
Заключение
Настройка SSH реверсного туннеля с использованием GatewayPorts
— это мощный инструмент для обхода ограничений брандмауэра. Благодаря правильно сконфигурированному SSH-серверу вы можете обеспечить доступ к удаленным службам, что существенно расширяет ваши возможности в управлении сетевой инфраструктурой. Убедитесь, что настройки безопасности остаются в приоритете, чтобы защитить свою сеть от несанкционированного доступа.