Существует система B со следующими открытыми серверами: у меня есть веб-сервер, прослушивающий порт 80, и ssh-сервер, прослушивающий 22. Однако только порт 22 является общедоступным. Теперь я хотел бы создать какой-то туннель, чтобы я мог получить доступ к B: 80 из A. Однако мой клиентский компьютер A, который хотел бы подключиться к системе B, также не является открытым для всех.

Итак, все, что у меня есть, это клиентский компьютер A, с которого я хотел бы получить доступ к серверу B, и там открытый порт 22. На A ни один порт не открыт или не может быть открыт.

Что (я думаю) мне нужно было бы открыть локально (на A) некоторый порт, который каким-либо образом соединяется через порт 22 B с портом 80 на B.

Возможно ли это без использования каких-либо открытых серверов «человек посередине» с несколькими портами?

2 ответа2

2

Использовать локальную переадресацию портов:

ssh -L 80:localhost:80 B

а затем подключиться к localhost:80 . Соединение будет перенаправлено на порт 80 B

2

(Примечание: Jakuje ответил, пока я составлял свой ответ. С самого начала все обстоит сложнее, поэтому я все равно выложу.)


Если я правильно понял, все, что вам нужно, это перенаправить локальный порт через SSH. Я предполагаю, что у вас есть доступ SSH к B

Команда Linux для запуска на A:

ssh -NL 2345:127.0.0.1:80 B

Теперь вы можете подключиться к порту 2345 на A и это должно быть эквивалентно подключению к порту 80 на B от самого B

Несколько замечаний:

  • -N заставляет ssh не выполнять команду на удаленной стороне (B); идеально подходит для переадресации портов.
  • Число 2345 выбрано произвольно; это может быть любое число от 1024 до 65535 (для привязки к порту ниже 1024 обычно требуется root-доступ). Если вы попали в уже занятый порт, попробуйте другой номер.
  • Адрес 127.0.0.1 я использовал, требует, чтобы ваш веб-сервер на B прослушивал интерфейс loopback связи. Если он прослушивает только какой-либо другой адрес, используйте его. Этот адрес должен быть действительным адресом вашего сервера, как видно из системы B Неважно, что этот адрес означает для A и не означает ли он что-то в первую очередь.
  • Если вам нужен компьютер C для подключения к перенаправленному порту 2345 на A вам следует ознакомиться с опцией ssh -g . Читайте man ssh .

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