Сегодня я обновлял свою память по настройке ssh-туннелей и наткнулся на несколько источников, описывающих переадресацию локального порта на веб-сайт. Например: https://www.techrepublic.com/article/how-to-use-local-and-remote-ssh-port-forwarding

«Откройте окно терминала на вашем клиенте и введите команду:

ssh -L 8080:www.slashdot.org:80 localhost

Вам будет предложено ввести пароль пользователя для клиентского компьютера. По сути, вы подключаетесь через SSH к своему клиентскому компьютеру, но создаете необходимый SSH-туннель к месту назначения. После успешной аутентификации в локальной учетной записи откройте браузер и укажите его http://localhost:8080. Ваш браузер должен автоматически перенаправить вас в Slashdot ».

Только это не сработает, если вы попробуете это. У меня заканчиваются неудачные соединения, 500 ошибок, 404 ошибки и т.д. Я пробовал другие сайты, даже не https. В чем дело?

2 ответа2

2

Этот метод работает, но не очень хорош для доступа к веб-сайтам, так как вам нужно перенаправить порт для каждого домена, к которому осуществляется доступ. Если вы загружаете slashdot в chrome и используете инструменты разработчика, вы можете видеть, что когда вы загружаете slashdot, он на самом деле загружает контент как минимум из 21 разных доменов. Если вы переадресовываете только один домен, вы не увидите весь контент.

Другая проблема заключается в том, что вы туннелируете на порт 80 на сайте, который обслуживает контент через порт 443. Если вы запустите "curl -i slashdot.org", вы увидите, что он выполняет перенаправление 301 на HTTPS. Когда браузер пытается выполнить перенаправление на HTTPS, все не получится.

Вам лучше использовать ssh в качестве SOCKS-прокси и настроить свой браузер для его использования. Вы можете открыть прокси socks на локальном порту следующим образом:

ssh -D 8080 myhost.com

myhost.com может быть "localhost" в вашем случае, но обычно это удаленный сервер. После того, как вы откроете этот сеанс, просто зайдите в настройки браузера и настройте браузер на использование прокси-сервера SOCKS v5, указывающего на порт localhost 8080 (это проще сделать в firefox, чем в chrome imho). Как только это будет сделано, браузер пропустит весь свой трафик через туннель ssh.

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

1

Джефф абсолютно прав, но я бы хотел добавить решение с локальной переадресацией портов:

Поскольку веб-сайт, к которому вы пытаетесь получить доступ, использует HTTPS, вам необходим доступ к его порту 443 .

$ ssh -L 8080:www.slashdot.org:443 localhost

Кроме того, вам нужно использовать https:// в браузере вместо http:// , чтобы вы могли получить доступ к следующему URL в вашем браузере: https://localhost:8080 . В Firefox это дало мне предупреждение "незащищенное соединение", так как очевидно, что сертификат SSL, выданный для сайта, к которому вы пытаетесь получить доступ, не был подписан для использования с localhost. Однако вы можете проигнорировать это предупреждение и продолжить.

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