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

30

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

ssh -D 8080 user@host

или

ssh -gCNf -D 8080 user@host

или

wathever with -D #

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

Что мне делать?

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

Ответы:

33

Способ 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для доступа к нему.

grawity
источник
Privoxy - лучшее решение. Большое спасибо.
Сейед Мортеза
18

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

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

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

У меня та же проблема, что хочу использовать 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.

justmao945
источник
4
ssh -L 8080:localhost:12345 user@host

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

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

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

-L [bind_address:] порт: хост: хост порт
         Указывает, что данный порт на локальном (клиентском) хосте должен быть
         переадресован на данный хост и порт на удаленной стороне. это
         работает, выделяя сокет для прослушивания порта на локальной стороне,
         необязательно привязан к указанному bind_address. Всякий раз, когда
         соединение сделано с этим портом, соединение переадресовано
         безопасный канал и соединение с портом хоста
         хостпорт с удаленной машины.

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

анонимный
источник
1

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

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

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