Переадресация локального порта SSH -L с localhost указывает на неправильные страницы

Переадресация локального порта SSH -L с localhost указывает на неправильные страницы

извините, если мой вопрос глупый, но я не могу понять две вещи. Предположим, я делаю пример, написанныйздесь:

[...]вы хотели подключиться с вашего ноутбука кhttp://www.ubuntuforumsorg с использованием туннеля SSH. Вам следует использовать номер исходного порта 8080 (альтернативный порт http), порт назначения 80 (порт http) и сервер назначения www.ubuntuforums.org. :

ssh -L 8080:www.ubuntuforums.org:80 <host>

Где <host>следует заменить на название вашего ноутбука.

В1: Что я могу этим добиться? На удаленном сервере нет sshd, поэтому трафик оставляет мой ПК незашифрованным, верно? Для чего мне это нужно?

Q2: Я пытаюсь сделать ssh -L 4444:linuxpl.com:80 localhost. Когда я ввожуhttp://localhost:4444В моем веб-браузере я вижу внутренний сайт LiteSpeed ​​Web Server. Когда я пробую другие страницы, я вижу внутренние сайты Apache. Когда я пробую другие страницы, я вижу сообщение 404 этого сайта о том, что страница не найдена. Однако некоторые из них работают так, как и ожидалось. Почему это происходит? Как это исправить?

решение1

Q1: Вы бы не хотели этого делать. Страница глупая по своей формулировке. Как вы сказали, трафик будет идти с вашего компьютера на ваш компьютер в зашифрованном виде, а затем полностью незашифрованным на сайт форума. Они могли бы объяснить это тем, что использовали другой компьютер для пересылки трафика, например, чтобы обойти брандмауэр.

В руководстве говорится следующее: «Вы хотите подключиться к форумучерезсвой ноутбук с другого компьютера», и тогда это обретает смысл.

В2: Если вы откроетеhttp://localhost:4444/на вашем компьютере он сделает HTTP-запрос к форуму, но сообщит форуму, что вы хотите host localhost, а не linuxpl.com. Затем сервер, вероятно, вернет страницу по умолчанию, а не фактический виртуальный хост, который вы хотели, поскольку он использует виртуальные хосты и localhostне отображается на тот же сайт, что и linuxpl.com.

Так что в целом, пересылка HTTP-трафика через ssh-туннели не будет работать так легко во многих случаях. Пересылка на прокси-сервер где-нибудь будет работать намного лучше.

Чтобы заставить ваш браузер отправлять правильные заголовки, вы можете добиться успеха, настроив файл hosts так, чтобы целевой адрес был вашей машиной. Таким образом, когда браузер будет разрешать адрес, он подключится к вашей локальной машине и все равно сообщит HTTP-серверу правильное имя хоста.

Вы можете попробовать это, добавив строку

127.0.0.1        linuxpl.com

в /etc/hosts

решение2

Q1: Я использовал это в среде, где у вас нет контакта с Интернетом. Представьте, что вы используете свой ноутбук в сети, которая не допускает подключения к внешнему миру, но есть одна машина, которой разрешено подключаться как к внешнему миру, так и к сети, в которой находится ваш ноутбук. Поэтому, чтобы иметь возможность просматривать веб-страницы, вам нужно будет установить shh для этой машины, чтобы ваш интернет-трафик входил во внешнюю сеть через авторизованную машину.

Связь выглядит примерно так: когда вы печатаетеhttp://localhost:4444ssh подхватит запрос и отправит его на хост, который затем отправит его на linuxpl.com:80. Соединение между вашим ноутбуком и хостом шифруется ssh, соединение между хостом и интернетом не шифруется, т. е. ssh только пересылает и шифрует сообщения между вашими двумя машинами.

В2: Не совсем понимаю, в чем проблема, но ssh -L 4444:linuxpl.com:80 localhost не имеет смысла... поскольку вы создаете туннель между своими машинами...

Связанный контент