SOCKS прокси на SSH сервере за HTTP прокси

Я настроил SOCKS прокси на порт 9090 для компьютера B в другом месте:

ssh -D localhost:9090 user@B

и настроил его в моем локальном браузере Google Chrome. Однако компьютер B находится за прокси-сервером HTTP, поэтому HTTP-запросы, поступающие локально, поступают на компьютер B через прокси-сервер SOCKS, но не могут быть адресованы (терминал, на котором запущен ssh -D localhost:9090 user@B показывает "open fail: connect fail: No "маршрут к хосту", когда такой запрос сделан).

Я пытался:

  1. настройка ОБА удаленного HTTP-прокси (за которым находится компьютер B) и SOCKS-прокси в Google Chrome,
  2. запуск ssh -D localhost:9090 user@B с правильно установленной переменной среды http_proxy,
  3. добавление http_proxy=_proxy_address_ к.bashrc пользователя на компьютере B;

но никто не работал.

Кто-нибудь знает, как настроить прокси-сервер SOCKS, чтобы учесть HTTP-прокси, за которым находится компьютер B? Любой метод, который не включает изменение SSHD или глобальной конфигурации на сервере, будет предпочтительным.

1 ответ

Решение

Вы бы гораздо лучше "перенаправили" прокси-сервер удаленной сети по SSH, а не использовали встроенный SOCKS-сервер (который просто ожидает сеть с адресацией через шлюз на другом конце).

ssh -L 8080:internal_ip_of_proxy:8080 user@ssh_server

Это предоставляет прокси-сервер локально, позволяя вам установить настройки прокси вашего браузера localhost:8080 и это будет туннелировать через SSH к удаленному прокси.

И вы можете применить это к любому удаленному сервису. Вы можете, например, туннелировать Imgur со своего сервера (в действительности прокси с одним хостом):

ssh -L 8080:imgur.com:80 user@ssh_host

И на местном терминале:

curl --header 'Host: imgur.com' localhost:8080

В противном случае требуется заголовок Host curl запросит несуществующий localhost сайт. Вы также можете обойти это, добавив строку в /etc/hosts, решая imgur.com в 127.0.0.1... Но я не по теме, тебе ничего не нужно для твоих целей.

Другие вопросы по тегам