マルチダイナミックポート転送を使用する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で利用可能なソックスプロキシを作成するだけで十分です。

答え2

SSHのマンページから:

 -D [bind_address:]port
         Specifies a local “dynamic” application-level port forwarding.
         This works by allocating a socket to listen to port on the local
         side, optionally bound to the specified bind_address.  Whenever a
         connection is made to this port, the connection is forwarded over
         the secure channel, and the application protocol is then used to
         determine where to connect to from the remote machine.  Currently
         the SOCKS4 and SOCKS5 protocols are supported, and ssh will act
         as a SOCKS server.  Only root can forward privileged ports.
         Dynamic port forwardings can also be specified in the configura‐
         tion file.

転送のために同じローカルポートを2回指定します-D 9697

答え3

最後のステップにすべてが示されています。ポート 9696 でリスニングを開始できません。これは、2番目のトンネルの場合、最初のトンネルの処理中に別のポート9696を使用する必要があるためです。

関連情報