web-dev-qa-db-ja.com

3台のマシン間のポートフォワーディング

A、B、Cのチェーンで接続された3台のマシンがあります。

 A-->B-->C

Aは私のマシン、Bはサーバー、CはいくつかのサービスとWebサーバーを備えた他のマシンです。 AからC(ポート80)のWebサーバーにアクセスする必要があるいくつかの問題があるため、sshを使用してAからBにログインし、次にBからCにログインできますが、現時点ではコンソールが少なすぎます。 Webブラウザーが必要ですが、オプション-Xでsshを使用しても機能しませんでした(Firefoxの起動時のdbusに関するいくつかの問題)。

クラシックコマンドを使用してBでポート転送を行い、ssh用に22ポートを転送します。

ssh -L 2222:localhostB:22 user@ipC

しかし、同じものを使用してポート80を転送しても機能しませんでした。

ssh -L 8888:localhostB:80 user@ipC

それを機能させるために他の転送があることは知っていますが、どのようにそして何を理解していませんでした。

私はこのようなものが必要です:

A --> B (frd from B:8888 to C:80) --> C (port 80 web server)

そのため、ipB:8888と入力すると、C:80に転送されます。

何をしなければならないかを説明するような助け、またはコマンド付きのスクリプトをいただければ幸いです。あるブログから、ssh -L転送を2回実行する必要があることに気付きましたが、その理由がわかりませんでした。

2
Mazeryt

あなたは正しい方向に進んでいます。

Aについて:

ssh -L 8888:ipC:80 user@ipB -N

Aのlocalhost:8888を介してCのWebサーバーにアクセスできるようになります

OPリクエストでもう少し詳細:

あなたの質問から、A上のCのWebサーバーにアクセスしたいと思いました(A上にWebブラウザーを備えたGUI環境があると思います)。

(何らかの理由で)Cに直接アクセスすることはできませんが、Bにアクセスできます。BはCにアクセスできます。そこで、AとBの間にトンネルを作成し、トンネルの端をCのWebサーバーに接続するようにBに要求します。

2
GeoSword