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


30

Питання просте, але відповідь не:

ssh -D 8080 user@host

або

ssh -gCNf -D 8080 user@host

або

wathever with -D #

Мені потрібен проксі-сервер, який я можу використовувати зі змінною http_proxy, у вбудованому пристрої, який не підтримує SOCKS.

Що я повинен зробити?


Чи не повинно бути ssh -D user@host:8080?
ngen

Я зробив це з ssh деякий час назад .. vnc через ssh. але ви могли б припустити використання кальмарів (http-проксі) через ssh. не можу згадати, як я це зробив, хоча на даний момент. це не -D 'cos (як ви знаєте -і краще за мене) -D - SOCKS, якщо я пригадую.
барлоп

@ngen: Ні. -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для доступу до нього.


Privoxy - найкраще рішення. Дуже дякую.
Засіла Мортеза

18

Усі -Dрезультати на сервері SOCKS. Якщо ваш клієнт не може впоратися з SOCKS, забудьте -D.

Потрібно запустити HTTP-проксі на віддаленому хості та переслати -L:

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

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 буде обслуговуватися у localhost: 1315.


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

Це відкриє порт 8080 на локальній машині та передасть усі дані на порт 12345 на localhost, як видно з віддаленої машини.


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

2

Запустіть Privoxy на віддаленому хості, а потім підключіться через SSH до Privoxy за допомогою -Lпараметра:

-L [bind_address:] порт: хост: хост-порт
         Визначає, що повинен бути даний порт на локальному (клієнтському) хості
         пересилається до даного хоста і порту на віддаленій стороні. Це
         працює, виділяючи сокет для прослуховування порту на локальній стороні,
         необов'язково прив’язаний до вказаної адреси bind_address. Кожен раз, коли
         до цього порту робиться зв'язок, з'єднання пересилається
         захищений канал, і встановлюється з'єднання з хостовим портом
         хост-порт від віддаленої машини.

( джерело manpage )


1

Ви також можете використовувати штопор (GPL)

Додайте наступне до свого .ssh/config

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

штопор запускає ssh над проксі-сервером http, а не зворотним запитом.
eMBee
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.