靴下ではなく、ssh経由のhttpプロキシ


30

質問は簡単ですが、答えはそうではありません:

ssh -D 8080 user@host

または

ssh -gCNf -D 8080 user@host

または

wathever with -D #

SOCKSをサポートしない組み込みデバイスで、http_proxy変数で使用できる一種のプロキシが必要です。

私は何をすべきか?


そうではありませんssh -D user@host:8080か?
ngen

私はしばらく前にsshでそれをやった.. sshを介してvnc。しかし、sshを介してsquid(httpプロキシ)を使用すると仮定できます。現時点ではどうやってやったのか思い出せません。-D 'cosではありません(ご存知のように-そして私よりも良いです)-DはSOCKSです。
-barlop

@ngen:いいえ-D。接続先のポートではなく、トンネルを開くポートを指定します。(接続ポートでさえ、互換性の理由からとして-p portではなくとして指定されてい:portます。)
grawity

回答:


33

方法1: SOCKSアップストリームの使用をサポートするHTTPプロキシ(PolipoやPrivoxyなど)を使用します。

最初に-DいつものようにSSH経由でトンネルを確立してから、SSHトンネルを使用するようにHTTPプロキシを構成します-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は最適なソリューションです。どうもありがとう。
Seyed Morteza

18

-DSOCKSサーバーへのすべての結果。クライアントが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」
8

7

SSH経由でHTTPプロキシを使用したいという同じ問題があります。多くのアプリケーションはHTTPプロキシのみをサポートしているため、HTTPプロキシはコマンドライン環境で簡単に使用できます。

いくつかのページを検索しましたが、私はこれを行う直接的な方法を見つけることができません(Polipo、Privoxy、またはtsocksと連鎖させることができます)...

数日間の作業の後、SSHを介したHTTPプロキシのシンプルなGolangバージョンを完成させました。それと遊ぶこと自由に感じなさいmallory

現在、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に転送されます。


2
忘れないでください、リモートホストでHTTPプロキシを実行する必要もあります。ポート転送自体は役に立ちません。
ジョナサン

2

リモートホストでPrivoxyを実行し、-Lオプションを使用してSSH経由でPrivoxyに接続します。

-L [bind_address:] port:host:hostport
         ローカル(クライアント)ホスト上の指定されたポートが
         リモート側の指定されたホストとポートに転送されます。この
         ローカル側のポートをリッスンするソケットを割り当てることにより機能します。
         オプションで、指定されたbind_addressにバインドされます。いつでも
         このポートに接続され、接続が転送されます
         安全なチャネル、およびホストポートへの接続が行われます
         リモートマシンからのホストポート。

マンページのソース


1

コルクせん抜き(GPL)も使用できます

以下を追加します .ssh/config

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

corkscrewは、要求された逆ではなく、httpプロキシ上でsshを実行します。
eMBee
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.