SSH -L local port forwarding with localhost points to wrong pages
Извините , если мой вопрос глуп, но я не могу понять две вещи. Предположим, я делаю пример, написанный здесь:
[...] вы хотели подключиться со своего ноутбука к http://www.ubuntuforums/ org, используя SSH-туннель. Вы должны использовать порт источника 8080 (альтернативный порт http), порт назначения 80 (порт http) и сервер назначения www.ubuntuforums.org.:
ssh -L 8080:www.ubuntuforums.org:80 <host>
куда
<host>
должно быть заменено именем вашего ноутбука.
Q1: Чего я действительно могу достичь с этим? На удаленном сервере sshd недоступен, поэтому трафик оставляет мой ПК незашифрованным, верно? Для чего мне это нужно?
Q2: я пытаюсь сделать ssh -L 4444:linuxpl.com:80 localhost. Когда я ввожу http://localhost:4444/ в своем веб-браузере, я вижу внутренний сайт LiteSpeed Web Server. Когда я пробую другие страницы, я вижу внутренние сайты Apache. Когда я пытаюсь сделать что-то другое, я вижу сообщение об отсутствии страницы на этом сайте. Хотя некоторые из них работают как положено. Почему это происходит? Как это исправить?
2 ответа
Q1: вы бы не хотели этого делать. Страница глупая в своей редакции. Как вы сказали, трафик будет передаваться с вашего компьютера на ваш компьютер в зашифрованном виде, а затем полностью незашифрованным на сайт форума. Они могли бы объяснить это, используя другой компьютер для пересылки трафика, например, чтобы обойти брандмауэр.
Учебное пособие означает "вы хотите подключиться к форуму через ноутбук с другого компьютера", и тогда это имеет смысл.
Q2: Если вы откроете http://localhost:4444/ на своей машине, он сделает запрос HTTP на форум, но сообщит форуму, что вы хотите принять localhost
не linuxpl.com
, Сервер, вероятно, вернет страницу по умолчанию, а не фактический виртуальный хост, который вы хотели, так как он использует виртуальные хосты и localhost
не отображается на том же сайте, что и linuxpl.com
,
Таким образом, в целом, пересылка HTTP-трафика через ssh-туннели не будет так легко работать много раз. Перенаправление на прокси-сервер куда-то будет работать намного лучше.
Чтобы ваш браузер отправлял правильные заголовки, вы можете добиться успеха, настроив файл hosts так, чтобы он утверждал, что целевой адрес - ваш компьютер. Таким образом, когда браузер распознает адрес, он подключится к вашему локальному компьютеру и все равно сообщит HTTP-серверу правильное имя хоста.
Вы можете попробовать это, добавив строку
127.0.0.1 linuxpl.com
в /etc/hosts
Q1: я использовал это в среде, где у вас нет контакта с Интернетом. Представьте, что вы используете свой ноутбук в сети, которая не позволяет подключаться к внешнему миру, но есть одна машина, которая может подключаться как к внешнему миру, так и к сети, в которой находится ваш ноутбук. Поэтому, чтобы иметь возможность просматривать Вам нужно будет подключиться к этой машине, чтобы ваш интернет-трафик входил во внешнюю сеть через авторизованную машину.
Соединение происходит примерно так: когда вы набираете http://localhost:4444/, ssh заберет запрос и отправит его на хост, который затем отправит его на linuxpl.com:80. Соединение между вашим ноутбуком и хостом зашифровано с помощью ssh, соединение между хостом и Интернетом не зашифровано, т.е. ssh только пересылает и шифрует сообщения между вашими двумя компьютерами.
Q2: Не совсем понимаю, в чем проблема, но ssh -L 4444:linuxpl.com:80 localhost не имеет смысла... поскольку вы туннелируете между вашей машиной и вашей машиной...