Назад | Перейти на главную страницу

Использование 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
    
  3. Сервер B подключается к серверу C через обратный туннель:

    ServerBHostName $  ssh -p 30000 User@localhost
    

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

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

Настроить:

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, и предполагая, что вы хотите подключиться к веб-серверу, работающему на порту 8080 сервера C:

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

Присоединиться:

http://localhost:8080/