回答:
(奇妙な状況、三角形の不等式のようなものはインターネットルーティングに当てはまりませんか?)
とにかく、上で、次のことを試してくださいA、sshにBを-D引き、
ssh -D 1080 address-of-B
これはでSOCKS5プロキシとして機能し、SOCKS5プロキシ127.0.0.1:1080接続をサポートするものなら何でも使用できます。 どうやら、wget環境変数を使用してこれを行うことができます
export SOCKS_SERVER=127.0.0.1:1080
wget http://server-C/whatever
時にはcurlもっと便利なこともあることに注意してください(つまりwget、SOCKS5を介してホスト名を検索できるかどうかはわかりませんが、これは私が思うにあなたの懸念の1つではありません)。また、FirefoxはこのようなSOCKS5プロキシを介して完全に機能します。
編集今、あなたが1行のソリューションを探していることに気づきました。さて、どうですか
ssh address-of-B 'wget -O - http://server-C/whatever' >> whatever
すなわち、wget-fetchedの出力をstdoutにリダイレクトし、ローカル出力を(リモートからのssh実行wgetから)ファイルにリダイレクトします。
これは機能しているように見えwgetますが、出力は少し混乱します( "に保存されます- ")。呼び出しに追加-qすることで削除できwgetます。
socksify代わりに変数が使用されている可能性があります。
socksify設定ではなく、別のプログラムです。
SOCKS_SERVER上の任意の効果を持っているwget、あなたはインストールする必要がありports.su/security/danteをした後、実行socksify wgetだけではなく、wget
触発され、別の質問に別の答え、私が使用することをお勧めproxychains-ngのを(の新しいバージョンであるproxychains)。
proxychains.conf現在のディレクトリ、またはat ~/.proxychains/proxychains.conf、またはatにファイルを作成します/etc/proxychains.conf。
-fコマンドライン引数を使用するか、PROXYCHAINS_CONF_FILE環境変数を使用するかを指定します。proxychains.confファイルに次を追加します。
[ProxyList]
socks5 127.0.0.1 1234
を実行しますssh -D 1234 your_host_b。これにより、sshはlocalhostのポート1234でリッスンし、リモートホストをSOCKSプロキシとして使用します。
ssh -ND 1234 your_host_b代わりに実行します。-Nsshがリモートサーバー上でコマンドを実行できないようにします(つまり、シェルを開きません)。proxychains4 yourcommandhere yourparametershere。例を参照してください。
proxychains4 wget -O - http://ifconfig.co/proxychains4 -q links http://ifconfig.co/使用するためにはwgetからSOCKS5プロキシでssh、あなたがインストールする必要がsecurity/dante使用するためにパッケージをSOCKS_SERVER持つオプションsocksifyのユーティリティを。
sudo pkg_add dante
その後、バックグラウンドでSSH接続を開きます。
ssh -N -C -D1080 user@hostB &
また、socksifyを介してSOCKS5プロキシを介してwgetを使用します。
env SOCKS_SERVER=127.0.0.1:1080 socksify wget http://website-C
ファイルをstdoutサーバーにパイプしstdinて、ワークステーションから読み取るだけです。
ssh -C user@hostB "wget -O- http://website-C" >> file-from-website-C
マシンBにトンネルを作成して、コールをWebサイトCにリダイレクトする必要があります。しかし、ISPが何らかの制限を設けていない限り、これがなぜ高速になるのか戸惑っています。
ワンライナーは知りませんが、これはそれほど複雑ではありません。
マシンAで、あなたはします(ランダムに11111を取得しました。1024を超えている限り、何でも好きなものを取得できます。または、rootになる必要があります)。
ssh -f -C -N -L 11111:C:80 username@B
Bのユーザー名は、Bに接続するために使用するものです。これにより、マシンBのポート11111にトンネルを作成し、マシンCのポート80(HTTPの443のWebサイトでHTTPSを使用)にリダイレクトする必要がありますオーダー ;) )
その後、マシンB経由でマシンAから直接ファイルをダウンロードできますhttp://C/path/to/file。
wget http://B:11111/path/to/file
これは、ポート転送(sshトンネリング)を介して実行できます。リソースは次のとおりです。http: //www.jfranken.de/homepages/johannes/vortraege/ssh2_inhalt.en.html#ToC9
基本的に、Bでポート転送を設定する必要があります。AがBにwgetを発行すると、BはパケットをCに転送し、結果をAに送り返します。
SOCKS_SERVER環境変数は、Ubuntuの14.04への影響はありません。