1

Я использую Putty для достижения переадресации порта обратного туннеля SSH. Большинство уроков учат меня перенаправлять удаленный порт на порт localhost. Однако могу ли я знать, имеет ли смысл вводить другой хост, такой как 192.168.1.132:8081 в поле Destination?

Я пытался сделать это. 192.168.1.132:8081 - это работающий веб-сервер с довольной страницей, но я получил ERR_EMPTY_RESPONSE когда захожу на localhost:12345 (я установил порт 12345 в качестве исходного порта) с клиентского устройства.


Мои замазки

Конфигурация исходящего прокси:

Конфигурация исходящего прокси

Конфигурация туннелирования (Dynamic - для соединения Socks5, пожалуйста, просто проигнорируйте его; R12345 - это туннель, с которым я играю):

Туннельный конфиг

Результат, который я пытаюсь получить доступ к туннелю от Назначения (Сервер SSH):

В результате я пытаюсь получить доступ к туннелю с места назначения (SSH-сервер)

Может кто-нибудь мне помочь?


ОБНОВЛЕНИЕ 1

На устройстве, на котором я запускаю команду SSH, я иду через прокси-сервер. Это влияет на поведение обратного туннеля?


ОБНОВЛЕНИЕ 2

Я попытался сделать обратный туннель с http-сервера напрямую. Однако на сервере SSH я могу зайти на сайт по адресу http://localhost:12345. Подходящая настройка и результат на ниже.

То же самое, http-сервер должен был выходить через http-прокси моего офиса!

Создать обратный туннель с http-сервера

И тогда я могу зайти на http-сервер с SSH-сервера через localhost:12345

3 ответа3

1

Да!

НО вы должны понимать, что этот other_host который вы будете указывать, находится в контексте LAN network клиента ssh. Потому что клиент ssh и сервер ssh могут находиться в двух разных сетях LAN.

Например:

ssh -R 1234:192.168.1.69:4321 johnny@terabithia.com
#                 ^
#                 |_ other_host

Тогда вам лучше быть уверенным, что 192.168.1.69 доступен с вашей стороны (клиент ssh). Может быть машина с аналогичным IP-адресом 192.168.1.69 пределах досягаемости terabithia.com в локальной сети other_host , но это не тот другой_хост, о котором говорится в приведенном выше фрагменте.

Некоторые тонкие вещи, чтобы принять к сведению:

  • Несмотря на то, что вы настроили прослушивающий tcp порт 1234 внутри terabithia.com, но он не доступен публично на terabithia.com. Это означает, что если вы проверите открытие порта с помощью nc -w 5 -z terabithia.com 12202 && echo "open" || echo "close" тогда вы увидите сообщение о close поскольку порт доступен только внутри terabithia.com.
  • Команда nc -w 5 -z localhost 1234 всегда успешно выполняется other_host даже если в other_host нет прослушивающего порта или даже если other_host вообще не существует. В этом случае сообщения об ошибках печатаются в клиентской консоли ssh client .
  • Поскольку ssh является протоколом связи, основанным на tcp, поэтому для переадресации портов UDP вам понадобятся другие инструменты в комбинации, такие как nc или socat .
  • Два основных путаницы - это использование -R против -L . Хитрость для легкого понимания этой темы состоит в том, чтобы думать, что ssh client ssh server принадлежат двум разным сетевым локальным сетям. Контекст other_host берется из локальной сети ssh client's если используется -R . В противном случае, если -L , контекст берется в локальной сети ssh server's .
  • Только -L может открыть общедоступный порт, если вы добавите поле address binding .
0

Да, вы можете сделать это, но если вы не понимаете, как это работает, легко сделать неверные предположения.

Если я правильно помню (прошло несколько месяцев, так что в интересах быстрого ответа, надеюсь, я правильно понял ...)
туннель, указанный как "Локальный" порт, заставит часть программного обеспечения, которую я назову "слушателем", прослушивать на машине с клиентом SSH. "Удаленный" порт приведет к тому, что часть программного обеспечения, которую я назову "слушателем", будет прослушивать компьютер, на котором работает SSH-сервер.

Понимание Localhost с Туннелями:
Теперь вот действительно сложная часть, которая может легко пройти через вас за петлю. Обычно, когда вы находитесь на одном компьютере, вы думаете, что "localhost" относится к этому компьютеру. Но нет. Лучше всего рассматривать поле "назначение" как текст. Поэтому после того, как слушатель получает трафик, он будет перенаправлять этот трафик через локальное программное обеспечение SSH, которое будет шифровать данные и проталкивать трафик через туннель. Сторона, отправляющая трафик, также предоставит информацию о "пункте назначения". Затем программное обеспечение удаленного SSH получит этот трафик и посмотрит, что говорит пункт назначения, а затем попытается отправить трафик туда.

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

0

Могу ли я использовать другой хост вместо localhost для поля назначения при переадресации порта обратного туннеля SSH?

Да, вы можете поместить любой хост в поле хоста назначения

Определения туннеля командной строки

Для целей этого ответа я буду использовать форму X:Y:Z , как клиент SSH командной строки описывает туннели, где этот туннель:

  • Порт источника
    • 1234
  • Место назначения
    • локальный:4321

будет описан как 1234:localhost:4321

Как работают туннели

Есть 2 типа туннелей, у которых есть набор назначения:

Местные туннели

Для туннеля, определенного как X:Y:Z вы можете обрабатывать трафик как отправленный клиенту через порт X , а также сервер, подключающийся к хосту Y порт Z и пересылающий любой трафик через него.

Удаленные туннели

Для туннеля, определенного как X:Y:Z вы можете обрабатывать трафик как отправленный на сервер через порт X , а клиент подключается к хосту Y порт Z и перенаправляет любой трафик через него.

Что вы можете использовать для туннелей

Местные туннели могут быть использованы для:

  • Доступ к услугам, которые не доступны через Интернет
  • Доступ к сервисам, которые могут быть использованы только с определенного IP

Удаленные туннели могут быть использованы для:

  • Предоставление удаленным системам доступа к портам на вашем локальном компьютере без доступа к Интернету.
  • Выставление других систем в вашей сети через Интернет

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