マルチダイナミックポート転送を使用するSSHトンネル

マルチダイナミックポート転送を使用するSSHトンネル

SSHトンネルを介して異なるサーバーで実行されている複数のJVMを監視しようとしています。

ここでは、UNIXの専門家のおかげで、次のように単一のサーバーで実行できました。

  1. jstatdターゲットサーバーで実行
  2. 9696をソックスプロキシポートとして使用するようにVisual VMを設定します。
  3. 私のローカルPCで、以下を実行します。

    ssh -L 2222:server1:22 bastion-host
    
  4. 私のローカルPCで、以下を実行します。

    ssh -o port=2222 -D 9696 -L 1099:localhost:1099 localhost
    

これにより問題が解決します。 2番目のサーバーにトンネリングしようとすると、次のことを試みます。

  1. 私のローカルPCで、以下を実行します。

    ssh -L 3333:server2:22 bastion-host
    
  2. 私のローカルPCで、以下を実行します。

    ssh -o port=3333 -D 9696 -L 2099:localhost:1099 localhost
    

しかし、最後のステップでは、次のように文句を言います。

bind: Address already in use
channel_setup_fwd_listener: cannot listen to port: 9696

似たようなことをした人はいますか?

修正する:

この複雑な理由は、jstatdがRMIサーバーアプリケーションであるためです。

http://download.oracle.com/javase/1.5.0/docs/tooldocs/share/jstatd.html

RMIアプリケーションと同様に、rmiregistryを使用して登録されます。ファイアウォールを介してrmiを使用するには、以下のようにSOCKSを使用する必要があります。

http://download.oracle.com/javase/1.4.2/docs/guide/rmi/faq.html#firewallOut

残念ながら、VisualVMではSOCKSプロキシポートを一度だけ設定でき、-Dオプションを使用すると同じローカルポートを両方のサーバーに転送できません。

ベストアンサー1

すでにコンピュータ(コンピュータA)があり、特定のポートから直接接続できない2つのサーバ(AとB)があり、SSHトンネルを介して接続しようとしていると思いましたか? ?

その場合は、-Dの代わりに-Lを使用して、異なるローカルポート上のマシンに2つのトンネル(各ターゲットサーバーに1つずつ)を作成し、監視ツール(エージェントレス設定)からローカルマシンに接続できます。確認したいリモートサーバー。

ssh -L 9000:localhost:<local port jstatd listens on> user@server1
ssh -L 9001:localhost:<local port jstatd listens on> user@server2

次に、ローカルモニタを使用してlocalhost:9000とlocalhost:9001に接続します。このトンネルはターゲットjstatdに接続されます。

中間サーバーがあれば、2ホップトンネルがあり、

ssh -L 9000:server1:<local port jstatd listens on> user@bastion-host
ssh -L 9001:server2:<local port jstatd listens on> user@bastion-host

さて、bastion-hostがすべてのJVMと通信できる場合

ssh -D 9000 user@bastion-host

ポート9000で利用可能なソックスプロキシを作成するだけで十分です。

おすすめ記事