27

Вопрос прост, но ответа нет:

ssh -D 8080 user@host

или же

ssh -gCNf -D 8080 user@host

или же

wathever with -D #

Мне нужен своего рода прокси, который я могу использовать с переменной http_proxy, во встроенном устройстве, которое не поддерживает SOCKS.

Что я должен делать?

6 ответов6

31

Метод 1: Используйте HTTP-прокси, который поддерживает использование SOCKS в восходящем направлении, например, Polipo или Privoxy.

Сначала установите туннель -D через SSH, как всегда, затем настройте прокси-сервер HTTP для использования туннеля SSH - пример конфигурации Polipo:

proxyAddress = "::1"
proxyPort = 8118
socksParentProxy = "localhost:8080"
socksProxyType = socks5

Наконец, укажите приложение на Polipo, используя http_proxy=localhost:8118 .

Способ 2: Запустите вашу программу внутри оболочки torsocks (или более старых tsocks), которые прозрачно проксируют все соединения. Он предназначен для использования с Tor, но работает с любым сервером SOCKS, включая ssh -D .

Способ 3: Установите HTTP прокси на вашем сервере, затем используйте ssh -L для доступа к нему.

17

Каждый -D приводит к SOCKS-серверу. Если ваш клиент не может справиться с SOCKS, забудьте -D .

Вы должны запустить HTTP-прокси на удаленном хосте и перейти с -L:

ssh -f -N -n -L8080:127.0.0.1:8080 host
6

У меня та же проблема, что хочу использовать HTTP прокси через SSH. Поскольку многие приложения поддерживают только HTTP-прокси, а HTTP-прокси легко использовать в среде командной строки.

Хотя я искал несколько страниц, но я не могу найти прямой (может быть соединен с Polipo, Privoxy или tsocks) способ сделать это ...

После нескольких дней работы я закончил простую версию HTTP-прокси Golang через SSH. Не стесняйтесь играть с ним: Мэллори.

В настоящее время поддерживается только ключ RSA (находится в $ HOME/.ssh/id_rsa) и авторизация по паролю.

host - это адрес сервера SSH, port - 22 если администратор не изменил. На стороне сервера просто наш старый друг sshd с нулевой конфигурацией.

mallory -engine=ssh -remote=ssh://host:port

или с именем user

mallory -engine=ssh -remote=ssh://user@host:port

или с именем user и паролем 1234

mallory -engine=ssh -remote=ssh://user:1234@host:port

После подключения HTTP-прокси будет работать на локальном хосте:1315.

4
ssh -L 8080:localhost:12345 user@host

Это откроет порт 8080 на локальном компьютере и перенаправит все данные на порт 12345 на локальном хосте, как видно с удаленного компьютера.

2

Запустите Privoxy на удаленном хосте, затем подключитесь через SSH к Privoxy с помощью опции -L :

-L [bind_address:]port:host:hostport
         Specifies that the given port on the local (client) host is to be
         forwarded to the given host and port on the remote side.  This
         works by allocating a socket to listen to port on the local side,
         optionally bound to the specified bind_address.  Whenever a con-
         nection is made to this port, the connection is forwarded over
         the secure channel, and a connection is made to host port
         hostport from the remote machine.

(источник справочной страницы)

1

Вы также можете использовать штопор (GPL)

Добавьте следующее в ваш .ssh/config

Host=RemoteServerIP or Name
User=UserLoginName
Port=PortNumber
ProxCommand=/usr/bin/corkscrew Proxy.Adress PortNumber %h %p

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