Использование SSH для туннелирования через два перехода, последний из которых подключается через обратный туннель ssh

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

Вот мои текущие настройки:

  1. Сервер B запускает sshd на порту 10000. Сервер C запускает sshd на порту 20000

  2. Клиент A подключается к серверу B через «нормальный» SSH

  3. Сервер C открывает обратный туннель SSH к серверу B через порт 30000

  4. Сервер B подключается к серверу C через этот обратный туннель

Что я хочу сделать: открыть порт на клиенте A, который перенаправляет соединения от клиента A через сервер B к серверу C ( через обратный туннель SSH, установленный между сервером B и сервером C)

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

  1. Клиент A подключается к серверу B через «обычный» SSH:

      ClientAHostName $ ssh -p 10000 User @ ServerBHostName 
     
  2. Сервер C открывает обратный SSH-туннель к серверу B через порт 30000:

     ServerCHostName $ ssh -p 10000 -N -R 30000: localhost: 20000 User @ ServerBHostName {{1 }} 
  3. Сервер B подключается к серверу C через этот обратный туннель:

     ServerBHostName $ ssh -p 30000 User @ localhost 
     

Причина, по которой я хочу это сделать, заключается в том, что я могу управлять определенной службой s на сервере C от клиента A через веб-браузер (с использованием перенаправленного порта).Из-за ограничений, налагаемых интернет-провайдерами клиента A и сервера C, я не могу подключиться напрямую с сервера B (или клиента A) к серверу C или с сервера C к клиенту A.

1
задан 28 November 2015 в 11:39
1 ответ

Чтобы упростить задачу, мне нравится назначать номер порта или диапазон для каждого сервера. Сохраняя то, с чего вы начали, B - 10000, C - 20000, забудьте о 30000.

Setup:

A$ ssh -p 10000 -N -L 20000:localhost:20000 UserB@B
C$ ssh -p 10000 -N -R 20000:localhost:20000 UserB@B

Теперь вы должны иметь возможность сделать

A$ ssh -p 20000 UserC@localhost

, чтобы получить оболочку на C, и если вы хотите для подключения к веб-серверу, работающему на сервере C порт 8080:

A$ ssh -p 20000 -N -L 8080:localhost:8080 UserC@localhost

Подключиться к:

http://localhost:8080/
1
ответ дан 3 December 2019 в 23:55

Теги

Похожие вопросы