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

1

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

[...] вы хотели подключиться со своего ноутбука к 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. Когда я пытаюсь сделать что-то другое, я вижу сообщение об отсутствии страницы на этом сайте. Хотя некоторые из них работают как положено. Почему это происходит? Как это исправить?

user532872
источник
1
Мы не форум, поэтому, чтобы сделать его пригодным для будущих посетителей: задайте один вопрос на вопрос.
Арьян

Ответы:

1

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

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

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

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

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

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

127.0.0.1        linuxpl.com

в / etc / hosts

Сами Кухмонен
источник
Страница не «глупая». Это не говорит, localhostно host. Это полностью действительный и универсально применимый учебник.
Даниэль Б
@DanielB Это могло бы быть сформулировано лучше. Теперь он объясняет, как подключиться с вашего ноутбука куда-то еще, а хост - это ноутбук. Затем они говорят, чтобы подключиться к localhost. Так что есть только одна машина. Поэтому туннелирование ничего не дает. Это на мой взгляд глупо. Если бы он объяснил, как проложить туннель через третью машину, он пригодился бы. Также это не объясняет, что это туннелирование даже не будет работать для виртуальных хостов, как заметил OP.
Сами Кухмонен
Нет. Весь учебник построен на том факте, что laptopэто машина, к которой вы можете подключиться. Нигде не сказано, что это одна и та же машина. Это может быть, конечно, но опять же: это просто учебник для изучения синтаксиса команды .
Даниэль Б
@DanielB В нем говорится «подключайтесь с вашего ноутбука к ubuntuforums.org с помощью туннеля SSH» , что означает, что вы находитесь на ноутбуке и хотите подключиться оттуда с помощью туннеля. В нем не говорится «подключиться через ноутбук» или объяснять, почему речь идет даже о ноутбуке. Это глупая формулировка. В нем должно быть сказано: «Вы хотите подключиться с машины A к веб-сайту X, используя туннель через машину B», и это было бы глупо. И добавьте упоминание о том, что протокол HTTP не рад этому.
Сами Кухмонен
@ user532872 Добавлен способ добиться этого с помощью файла hosts
Сами Кухмонен,
0

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

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

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

berserck
источник
Да, но это именно то, что предлагает сайт, на который я ссылаюсь выше. Вот почему я спрашиваю, какой смысл делать это и почему это не работает для некоторых сайтов. Пример, который вы предоставили, отличается, он включает в себя третью машину в игре и предполагает, что он работает с sshd.
user532872 12.12.15
Сайт говорит хозяин, а не localhost
berserck