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

734
mannok

Я использую 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

1
@KamilMaciorowski Извините за незавершенный вопрос. Я обновил вопрос с некоторым изображением. mannok 6 лет назад 0
Что происходит, когда вы просматриваете `192.168.1.132: 8081` из SSH-клиента? (без участия SSH в этом случае). Вы видите правильную страницу? Kamil Maciorowski 6 лет назад 0
@KamilMaciorowski Конечно, нормальная страница, нормальная производительность mannok 6 лет назад 0
Пожалуйста, прочитайте [это] (https://stackoverflow.com/a/31433528). Сервер HTTP по адресу `192.168.1.132: 8081` может игнорировать запросы, направленные на адреса, отличные от` 192.168.1.132`. Когда вы подключаетесь с удаленной стороны вашего SSH-соединения, адресом является `localhost: 12345`, и он не подходит. Если бы туннель вообще не работал, вы бы получили `ERR_CONNECTION_REFUSED`, а не` ERR_EMPTY_RESPONSE`. Ответ TOOGAM правильный: в общем, вы можете строить туннели таким образом. Kamil Maciorowski 6 лет назад 1
@KamilMaciorowski Я вижу. Это означает, что пустой ответ генерируется сервером http, верно? Из-за неверного домена / имени хоста? Но когда я набираю localhost: 8081 - это http-сервер, я могу получить доступ к странице. В этом случае запрашивающее имя hosename тоже localhost! mannok 6 лет назад 0
«Это означает, что пустой ответ генерируется сервером http, верно?» - Я думаю так. Когда вы набираете `localhost: 8081` на HTTP-сервере, запрос проходит через интерфейс обратной связи. Запросы с других компьютеров поступают из других мест (например, через `eth0` или около того). Я думаю, это имеет значение, когда программное обеспечение HTTP-сервера проверяет правильность этих запросов. Kamil Maciorowski 6 лет назад 0
@KamilMaciorowski Большое спасибо за ваш терпеливый ответ !!! Но я только что попробовал другой тест и обновился в обновлении 2. На этот раз я делаю туннель напрямую с http-сервера, и он работает, и я могу зайти на http-сервер с SSH-сервера !! Это меня так смущает ... mannok 6 лет назад 0
Вы злоупотребляете концепцией сайта. У вас был один вопрос, на него ответил TOOGAM. Мои комментарии были только для того, чтобы убедить вас, что ваши результаты не соответствуют полученному вами ответу (проблема не в SSH). Комментарии не для решения дополнительных вопросов, правда. Но хорошо, давайте попробуем. Локальная сторона вашего соединения передает пакеты в `localhost: 8081`, то есть в интерфейс обратной связи. HTTP-сервер видит `localhost: 12345`, используемый в адресе запроса, поступающего из интерфейса обратной связи. Сервер, вероятно, не против другого порта, остальные подходят. Это нюансы сервера, а не SSH. Kamil Maciorowski 6 лет назад 0
Чтобы избежать возможных особенностей HTTP-серверов, вы можете играть с прослушиванием `netcat`, являющимся целью вашего туннеля. Kamil Maciorowski 6 лет назад 0
Чтобы легко проверить, отвечает ли веб-сервер только, если к нему обращаются как http://192.168.1.132:8081, вы можете попробовать то, что дает http://192.168.1.132.xip.io:8081. (См. Http://xip.io для документации.) Arjan 6 лет назад 0

2 ответа на вопрос

0
TOOGAM

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

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

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

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

Ваш общий ответ верен, но объяснение «localhost» довольно непрозрачно, особенно в контексте вопроса, потому что: (1) настройки SSH OP вообще не включают `localhost`; единственное использование - localhost: 12345 в браузере удаленной стороны, что верно. (2) Мы говорим об удаленной переадресации, поэтому назначение (если это был `localhost` или что-то еще) в любом случае разрешается локально. Назначение разрешается на конце не для прослушивания любого туннеля. Путаница может возникнуть в случае локальной переадресации ([пример] (https://superuser.com/q/1285009/432690)), где не слушающий конец является удаленным. Kamil Maciorowski 6 лет назад 1
0
jrtapsell

Могу ли я использовать другой хост вместо 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

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

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

Похожие вопросы