質問は簡単ですが、答えはそうではありません:
ssh -D 8080 user@Host
または
ssh -gCNf -D 8080 user@Host
または
wathever with -D #
SOCKSをサポートしていない組み込みデバイスで、http_proxy変数で使用できる一種のプロキシが必要です。
私は何をすべきか?
方法1: SOCKSアップストリームの使用をサポートするHTTPプロキシを使用します。 PolipoまたはPrivoxy。
最初にいつものようにSSHで-D
トンネルを確立してから、SSHトンネルを使用するようにHTTPプロキシを構成します– Polipo構成の例:
proxyAddress = "::1"
proxyPort = 8118
socksParentProxy = "localhost:8080"
socksProxyType = socks5
最後に、http_proxy=localhost:8118
を使用してアプリにPolipoを指定します。
方法2:すべての接続を透過的にプロキシするtorsocks
ラッパー(または古いtsocks
)内でプログラムを実行します。 Torで使用するためのものでしたが、ssh -D
を含むすべてのSOCKSサーバーで動作します。
方法3:サーバーにHTTPプロキシをセットアップし、ssh -L
を使用してアクセスします。
すべての-D
はSOCKSサーバーになります。クライアントがSOCKSを処理できない場合は、-D
を忘れてください。
リモートホストでHTTPプロキシを実行し、-L
で転送する必要があります。
ssh -f -N -n -L8080:127.0.0.1:8080 Host
SSH経由でHTTPプロキシを使用したいのと同じ問題があります。多くのアプリケーションはHTTPプロキシのみをサポートしており、HTTPプロキシはコマンドライン環境で簡単に使用できます。
いくつかのページを検索しましたが、これを行うための直接的な方法(Polipo、Privoxy、またはtsocksと連鎖させることができます)が見つかりません...
数日後、SSHを介した単純なGolangバージョンのHTTPプロキシを完成させました。自由に遊んでみてください 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で機能します。
ssh -L 8080:localhost:12345 user@Host
これにより、ローカルマシンのポート8080が開き、すべてのデータがリモートマシンから見てlocalhostのポート12345に転送されます。
リモートホストでPrivoxyを実行し、次にSSH経由で-L
オプションを使用してPrivoxyに接続します。
-L [bind_address:] port:Host:hostport ローカル(クライアント)ホスト上の特定のポートを、特定のホストおよび特定のホスト上のポートに転送することを指定します。リモート側。これは、ローカル側のポートをリッスンするソケットを割り当てることで機能します。 オプションで、指定されたbind_addressにバインドされます。このポートに接続が行われるたびに、接続はセキュアチャネルを介して転送されます 。リモートマシンからホストポート ホストポートに接続されます。
( manpage source )
コルクスクリュー(GPL)も使用できます
以下を.ssh/config
に追加してください
Host=RemoteServerIP or Name
User=UserLoginName
Port=PortNumber
ProxCommand=/usr/bin/corkscrew Proxy.Adress PortNumber %h %p