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

Еще один вопрос о SSH-туннелировании

Вот диаграмма

Сервер A ----> Сервер B <----- Портативный компьютер

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

Теперь у меня есть приложение, настроенное на сервере A, которое мне нужно для доступа через порт 443 на ноутбуке, как я могу это сделать?

Немного догадываюсь, что у вас уже есть:

начнем с обратного туннеля:

serverA:~ $ ssh -R 22:localhost:10022 serverB

затем с портативного компьютера подключитесь к serverB и подключите локальную пересылку к порту, который вы определили в обратном направлении:

laptop:~ $ ssh -L 10023:localhost:10022 serverB

если я правильно вас понял, то вы уже сделали что-то подобное. А теперь к последней части:

подключитесь к localhost на порт, который вы использовали в локальном переадресации, это отправляет все пакеты непосредственно на serverA, укажите другой порт переадресации, чтобы ваше приложение могло подключиться к serverA

laptop:~ $ ssh -p 10023 -L 10443:localhost:443 localhost

если ваше приложение должно подключиться к 443 и не может использовать другой порт, например 10443, который я использовал в примере, вам придется выполнить последнее подключение как root:

laptop:~ $ su -
laptop:~ # ssh -p 10023 -L 443:localhost:443 user@localhost

или

laptop:~ $ sudo ssh -p 10023 -L 443:localhost:443 user@localhost

Некоторые пояснения:

  • "443: localhost: 443" разрешается на удаленном конце .... так что на самом деле это serverA
  • "user @" - это пользователь, необходимый для входа на serverA, если он не нужен раньше, он нужен сейчас, поскольку теперь вы локально являетесь root
  • "localhost" разрешается локально, поэтому на самом деле это Ноутбук.

Если вы хотите, чтобы перенаправленный порт -R на сервере B был доступен с сервера A, вам необходимо указать адрес привязки на сервере B слева от удаленного порта. Например, если B имеет адрес 1.2.3.4 и вы подключаетесь с ноутбука:

laptop:~ $ ssh -R 1.2.3.4:10443:127.0.0.1:443 server-b

Это перенаправит порт 10443 на server-b на 443 на портативном компьютере. Если вы хотите использовать вместо этого порт 443, войдите на server-b как root.

Если у вас есть SSH-доступ к серверу A, выполните что-то вроде ssh -L 8443: localhost: 443 user @ serverA должно работать. Тогда вы можете использовать https: // локальный: 8443 для подключения.