web-dev-qa-db-ja.com

SSHセッションを介してインターネットをリモートマシンに提供しますか?

リモート/ホストマシン(同じネットワーク/ LAN)にSSHで接続しているマシンはインターネットにアクセスできますが、ホストはアクセスできません。

ホストで更新を実行してパッケージをインストールすると、ローカルでプロキシを起動し、それを使用するようにリモートマシンを構成する必要があるため、非常に不便になります。

それで、SSHや他の方法でこれを行う簡単な方法があるかどうか疑問に思っていましたか?

私はその中にある複雑さを認識していますが、知りたいと思っていました。

Emacsでplinkを使用する(重要な場合)。

20

インターネットにアクセスできるマシンをhasinetと呼び、そうでないマシンをnoinetと呼びましょう。

SSH接続を作成できる場合fromnoinettohasinet

OpenSSHの組み込みSOCKSプロキシを使用すると、これを簡単に行うことができます。このコマンドは、ポート1080でリッスンしているnoinetにSOCKSプロキシをセットアップします。

noinet$ ssh -D 1080 hasinet

SSH接続しかできない場合tonoinetfromhasinet

OpenSSHのSOCKSプロキシをhasinetで実行し、ポートをnoinetからhasinetに転送できます。これは、次のような1つのコマンドで巧妙に実行できます(@Patrickに感謝)。

hasinet$ ssh -D 1080 localhost -t ssh -R 1080:localhost:1080 noinet

SOCKSプロキシの使用方法

このプロキシの使用方法は、アプリケーションによって異なります。一部のアプリケーションは組み込みのSOCKSプロキシをサポートしています。その場合は、localhost:1080でプロキシを使用するようにアプリを構成する必要があります。そうでない場合は、@ sciurusが示唆するように、プロキシチェーンまたはredsocksを使用できます。 tsocks は、一部のコマンドにネットワークアクセスのみを提供する必要がある場合に、より軽量なソリューションです。

21
smammy

SSH経由でこれを行う方法は次のとおりです。

インターネットにアクセスできないマシンで、実行します

ssh -D 8080 machine_with_internet_access

8080を未使用のポート番号に置き換えることができます。

次に、 proxychains または redsocks のようなソフトウェアをインストールし、localhost:8080に接続するように設定します。それらを介してインターネットアクセスを必要とするソフトウェアを実行します。

2
sciurus