Я хотел бы использовать OpenSSH, чтобы разрешить переадресацию портов через два перехода, причем последний переход подключается через обратный туннель.
Вот мои текущие настройки:
Сервер B запускает sshd на порту 10000. Сервер C запускает sshd на порту 20000
Клиент A подключается к серверу B через «нормальный» SSH
Сервер C открывает обратный туннель SSH к серверу B через порт 30000
Сервер B подключается к серверу C через этот обратный туннель
Что я хочу сделать: открыть порт на клиенте A, который перенаправляет соединения от клиента A через сервер B к серверу C ( через обратный туннель SSH, установленный между сервером B и сервером C)
Вот соответствующие команды, которые я сейчас использую:
Клиент A подключается к серверу B через «обычный» SSH:
ClientAHostName $ ssh -p 10000 User @ ServerBHostName
Сервер C открывает обратный SSH-туннель к серверу B через порт 30000:
ServerCHostName $ ssh -p 10000 -N -R 30000: localhost: 20000 User @ ServerBHostName {{1 }}
Сервер B подключается к серверу C через этот обратный туннель:
ServerBHostName $ ssh -p 30000 User @ localhost
Причина, по которой я хочу это сделать, заключается в том, что я могу управлять определенной службой s на сервере C от клиента A через веб-браузер (с использованием перенаправленного порта).Из-за ограничений, налагаемых интернет-провайдерами клиента A и сервера C, я не могу подключиться напрямую с сервера B (или клиента A) к серверу C или с сервера C к клиенту A.
Чтобы упростить задачу, мне нравится назначать номер порта или диапазон для каждого сервера. Сохраняя то, с чего вы начали, 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/