リモート/ホストマシン(同じネットワーク/ LAN)にSSHで接続しているマシンはインターネットにアクセスできますが、ホストはアクセスできません。
ホストで更新を実行してパッケージをインストールすると、ローカルでプロキシを起動し、それを使用するようにリモートマシンを構成する必要があるため、非常に不便になります。
それで、SSHや他の方法でこれを行う簡単な方法があるかどうか疑問に思っていましたか?
私はその中にある複雑さを認識していますが、知りたいと思っていました。
Emacsでplink
を使用する(重要な場合)。
インターネットにアクセスできるマシンをhasinet
と呼び、そうでないマシンをnoinet
と呼びましょう。
noinet
tohasinet
OpenSSHの組み込みSOCKSプロキシを使用すると、これを簡単に行うことができます。このコマンドは、ポート1080
でリッスンしているnoinet
にSOCKSプロキシをセットアップします。
noinet$ ssh -D 1080 hasinet
noinet
fromhasinet
OpenSSHのSOCKSプロキシをhasinet
で実行し、ポートをnoinet
からhasinet
に転送できます。これは、次のような1つのコマンドで巧妙に実行できます(@Patrickに感謝)。
hasinet$ ssh -D 1080 localhost -t ssh -R 1080:localhost:1080 noinet
このプロキシの使用方法は、アプリケーションによって異なります。一部のアプリケーションは組み込みのSOCKSプロキシをサポートしています。その場合は、localhost:1080
でプロキシを使用するようにアプリを構成する必要があります。そうでない場合は、@ sciurusが示唆するように、プロキシチェーンまたはredsocksを使用できます。 tsocks は、一部のコマンドにネットワークアクセスのみを提供する必要がある場合に、より軽量なソリューションです。
SSH経由でこれを行う方法は次のとおりです。
インターネットにアクセスできないマシンで、実行します
ssh -D 8080 machine_with_internet_access
8080を未使用のポート番号に置き換えることができます。
次に、 proxychains または redsocks のようなソフトウェアをインストールし、localhost:8080に接続するように設定します。それらを介してインターネットアクセスを必要とするソフトウェアを実行します。