回答:
(奇妙な状況、三角形の不等式のようなものはインターネットルーティングに当てはまりませんか?)
とにかく、上で、次のことを試してください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
代わりに実行します。-N
sshがリモートサーバー上でコマンドを実行できないようにします(つまり、シェルを開きません)。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への影響はありません。