У меня есть следующий вариант использования переадресации удаленного порта с использованием SSH. У меня есть сервер лицензирования (L) в моей локальной сети. Я хочу, чтобы лицензирование было возможно с целевого сервера (T). T доступен только через джампбокс (J). Чтобы лицензирование работало, мне нужны два определенных порта, которые будут доступны для T. Я не хочу локально перенаправлять их из T по причинам, которые я здесь не буду разрабатывать. Итак, подведем итог, мне нужно удаленно переадресовать порт, скажем, 1025 следующим образом:

L -> J -> T

Текущее решение

Сейчас я просто делаю две переадресации удаленных портов следующим образом (суффикс "_IP" относится к соответствующему IP-адресу)

  • От L: ssh -fNT -R 1025: 127.0.0.1: 1025 user @ J_IP
  • От J: ssh -fNT -R 1025: 127.0.0.1: 1025 user @ T_IP

И все работает как надо.

Требуется решение

Из соображений удобства использования и безопасности я бы хотел, чтобы пересылка выполнялась одним туннелем или хотя бы одной командой. В идеале, переадресованные порты не должны быть доступны от J. После прочтения некоторой документации по ssh и блогов я придумал следующую команду от L:

ssh -fNT -R T_IP:1025:127.0.0.1:1025 user@J_IP

Не работает Журналы sshd на J показывают успешную аутентификацию. Прежде всего, это правильно в теории? Должен ли я дополнительно настроить T?

NB: Обычно я делаю что-то похожее для прямого ssh на T с локальной переадресацией портов на моей машине, и я подумал, что это будет довольно похоже:

ssh -fNT -L [127.0.0.1:]2222:T_IP:22 user@J_IP
ssh -p 2222 user@localhost

Соответствующие сведения о конфигурации: J имеет следующие параметры в /etc /ssh /sshd_config:

AllowTcpForwarding yes
GatewayPorts yes

Выполненные тесты: Я также должен сказать, что я не эксперт по Linux, поэтому я не могу понять все возможные причины, по которым он не работает. Вот сценарии, в которых он был опробован:

  • GatewayPorts да на Т
  • Брандмауэр отключен на всех задействованных машинах

Версии: все задействованные машины используют centos/RHEL 7.5. openssh 7.4 используется. Результат сш-V:

OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017

Предложения

  1. Должен ли я иметь более экзотическое использование ssh, то есть использование ProxyCommand или RemoteCommand?
  2. Я пропускаю какую-то точку конфигурации, либо ОС, либо самого ssh?

PS: это мой первый вопрос по стеку, я, наверное, забыл ключевую информацию. Я постараюсь быть максимально реактивным в комментариях.

1 ответ1

0

Наконец-то я нашел решение своей проблемы в другом сообществе SlackExchange, см. Этот пост.

Он заключается в использовании опции -J (это ярлык для опции ProxyCommand или ProxyJump, но доступен для openssh> = 7.3). Применительно к моему варианту использования он дает следующее от L-сервера:

ssh -fNT -R 1025:127.0.0.1:1025 -J user@J_IP user@T_IP

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .