IntelliJ から動作中の SSH トンネル経由でポートに接続しますか?

IntelliJ から動作中の SSH トンネル経由でポートに接続しますか?

私はリモートの Ubuntu 14.x サーバー上にあるサーバー アプリに取り組んでいます。そのアプリはリモート ボックスのポート 8000 をリッスンしています。適切な SSH セッションがあるのでボックスにトンネル接続されており、sudo 機能も持っています。

私のオフィスのローカル Linux システムには IntelliJ があり、これも Ubuntu 14.x を実行しています。IntelliJ リモート デバッグ セッションを実行するには、リモート ボックスのポート 8000 に接続する必要があります。リモート ボックスのポート 8080 は公開されていません。

IntelliJ が接続するためのローカル ポートをシステム上に提供し、そのポートとの間のトラフィックを SSH トンネル経由でリモート システムのポート 8000 にプロキシ/転送できるユーティリティ、IP テーブル トリック (リモート ボックス上)、SSH トリックなどはありますか? つまり、ローカル ボックス上の IntelliJ は、リモート ボックス上のサーバー アプリと直接通信していると認識しますが、実際には、それらの間の接続はアクティブな SSH トンネルを経由しているということですか?

かなり前に同じようなことをしたのを覚えていますが、やり方は完全に忘れてしまいました。当時はリモート クライアントが Windows ボックスだったので、ソリューションは Windows システム用でした。今回は、ローカル システムとリモート システムの両方が Ubuntu 14.x サーバーです。

答え1

ローカルマシンに転送トンネルを設定する

autossh -f -N -L 0.0.0.0:8000:localhost:8000 username@remotebox

0.0.0.0:8000IntelliJ が接続すると、Web アプリがローカル マシン上で実行され、すべてのローカル インターフェイスにバインドされ、ポート 8000 で実行されていると認識されます。

localhost:8000は、リモートボックスのコンテキストでトンネルが接続する場所です。は、作業中のlocalhostものではなく、リモートボックス マシン内のインターフェイスです。そこで、ユーザーのコンテキストから見ると、実質的には Web アプリであるポート 8000 に接続します。localhostlocalhostusername

autosshssh接続が切断された場合に自動的に再接続するラッパーです。

リモートボックスで ssh に非標準ポートを使用している場合は、-P <PORT>パラメータを使用して接続します。

上記の回答で目的が達成されない場合は、次の回答を検討する価値があります。https://unix.stackexchange.com/a/118650/61956 そこから、最初の図を説明しました。ローカル ポートの前にインターフェースを付けました。省略すると0.0.0.0、デフォルトで になると思いますがlocalhost、必要に応じて省略できます。 がデフォルトである0.0.0.0:場合、ネットワーク上の誰もそのマシンを使用して ssh トンネルを使用できないため、この部分を削除する方が安全かもlocalhostしれません。それ以外の場合は、作業中のマシンの IP である192.168.10.10:8000場合、リモート Web アプリへのエントリ ポイントになります。192.168.10.10

関連情報