http прокси через ssh, а не носки

29462
behrooz

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

ssh -D 8080 user@host 

или же

ssh -gCNf -D 8080 user@host 

или же

wathever with -D # 

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

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

27
Разве это не должно быть `ssh -D user @ host: 8080`? ngen 13 лет назад 0
Я сделал это с SSH некоторое время назад .. VNC через SSH. но вы могли бы предположить использовать Squid (HTTP-прокси) через SSH. не могу вспомнить, как я это сделал, хотя на данный момент. это не -D 'потому что (как вы знаете - и лучше, чем я) -D это НОСКИ, если я помню. barlop 13 лет назад 0
@ngen: Нет. `-D` указывает порт для открытия туннеля, а не порт для подключения. (Даже порт * connection * указывается как `-p порт`, а не`: port`, из соображений совместимости.) grawity 13 лет назад 0

6 ответов на вопрос

31
grawity

Метод 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
ceving

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

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

ssh -f -N -n -L8080:127.0.0.1:8080 host 
Для запуска прокси я обнаружил, что "tinyproxy" очень прост и уже достаточно разумно настроен по умолчанию. На удаленном хосте Ubuntu / etc просто "sudo apt-get install tinyproxy", а затем перенаправьте на порт 8888, как указано выше: "ssh -L8888: 127.0.0.1: 8888" Jimbly 7 лет назад 2
6
justmao945

I have the same issue that want to use HTTP proxy through SSH. Because many applications only support HTTP proxy, and HTTP proxy is easy to be used in command line environment.

Although searched several pages but I can't find a direct(can be chained with Polipo, Privoxy, or tsocks ) way to do this...

After a days' work, I finished a simple Golang version of HTTP proxy over SSH. Feel free to play with it: mallory.

Currently only support RSA key(located at $HOME/.ssh/id_rsa) and password authorisation.

host is the SSH server address, port is 22 if is not changed by your admin. The server side is just our old friend sshd with zero configuration.

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

or with username user

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

or with username user and password 1234

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

After connected, a HTTP proxy will serve on localhost:1315.

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

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

Не забывайте, у вас также должен быть HTTP-прокси, работающий на удаленном хосте. Перенаправление портов само по себе не поможет. Jonathan 6 лет назад 2
2
anonymous

Run Privoxy at the remote host, then connect via SSH to Privoxy using the -L option:

-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. 

(manpage source)

1
aurelien

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

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

Host=RemoteServerIP or Name User=UserLoginName Port=PortNumber ProxCommand=/usr/bin/corkscrew Proxy.Adress PortNumber %h %p 
Corkscrew запускает SSH через HTTP-прокси, а не наоборот. eMBee 6 лет назад 0

Похожие вопросы