SSHトンネリング経由で JConsole
JConsole を SSH トンネリング経由で行う方法です。
ポートへの到達確認。
まず、サーバ側のポートに到達できるか確認しましょう。SSHでトンネリングしてから、telnetでポートを叩いてみましょう。この時点でつながらない場合は、SSHの設定ミスや、サーバ側でのパケットフィルタリングや、物理レベルの問題の可能性があります。
サーバアドレスの指定
クライアントとサーバでRMI接続は、以下のような手順で行われます。
- ローカルホストから、サーバのポートに接続。
- サーバは、サーバが公開するリモートオブジェクトの情報を返す。
- クライアントは、サーバから受け取った情報を元にリモートオブジェクトのスタブを作成し、リモートオブジェクトに接続する。
ここで問題になるのが 2 の動作で、リモートオブジェクトのホスト名がクライアントからIP到達不可な場合はアクセスできません。SSHトンネリングを行う必要のある場合は、通常はIP到達不能なアドレスが返ってきているはずです。
そのため、サーバのVM起動時のプロパティによって、サーバの公開アドレスを localhost として設定します。
-Djava.rmi.server.hostname=localhost
そうすることにより、2 の動作時に、クライアントはローカルホストに接続しに行くようになります。