Назад | Перейти на главную страницу

SSH-туннелирование для HTTP: должен ли быть открыт целевой HTTP-порт прокси?

Пример:

Я пытаюсь использовать PuTTy для создания SSH-туннеля от моего ноутбука к моему серверу (для целей этого примера MyServer.com:22). Порт 22 включен на маршрутизаторе между MyServer.com и Интернетом.

MyServer.com запускает прокси-сервер Privoxy HTTP на порту по умолчанию 8118. Порт 8118 не включен на маршрутизаторе.

Когда я создаю туннель из локального порта на моем ноутбуке, скажем 3500, на MyServer.com:22, а затем настраиваю свой веб-браузер для использования localhost: 3500 в качестве прокси, я не получаю веб-страницы, отображаемые в моем веб-браузере - вместо этого я получаю строку текста из Open SSH, описывающую номер версии программного обеспечения в веб-браузере.

Я видел (и не до конца понял) ссылки на SOCKS и ключевое слово ProxyCommand в файле sshd_config OpenSSH. Могу ли я использовать один / оба из них для создания туннеля к MyServer.com:22, который обслуживает веб-страницы, или совершенно необходимо, чтобы прокси HTTP на MyServer.com:8118 был доступен в Интернете?

Это потому, что вы используете технику переадресации локального порта:

$ ssh -L 3500:yourserver.com:22 user@yourserver.com

Эта команда выделяет сокет для прослушивания порта 3500 на вашем ноутбуке. И когда вы настраиваете браузер для использования localhost:3500 в качестве прокси-сервера веб-трафик пересылается по защищенному каналу, и устанавливается соединение с yourserver.com:22, а на самом деле ты telnetподключившись к вашему серверу, вы получаете версию SSH:

SSH-2.0-OpenSSH_4.3
Protocol mismatch.

Возможно, вы захотите вместо этого использовать динамическую переадресацию портов:

$ ssh -D 3500 user@yourserver.com

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

Не забудьте настроить веб-браузер для использования SOCKS Host, не HTTP-прокси.