簡體   English   中英

使用JSch通過SSH隧道訪問生產中的JMX

[英]Accessing JMX in production via SSH tunnel using JSch

我正在嘗試使用JMX自動執行某些操作。

它適用於開發環境。 但是當談到受防火牆保護的生產時,我需要建立一個SSH隧道,然后才能訪問JMX控制台。

早些時候,我使用putty或ssh創建隧道並在本地運行我的java程序。 由於我們使用1-2主機,因此更容易。 現在它變成了10個主機。 現在我不想每次都創建隧道並斷開連接並運行程序。

我想要做的是,使用JSch自動創建SSH隧道,並將JMX與java程序連接。 我試圖這樣做,但它不起作用。

我收到java.rmi.ConnectException:連接拒絕主機:localhost; 嵌套異常是:java.net.ConnectException:連接被拒絕:連接

有可能這樣做嗎?

你為什么不使用Runtime.exec()來啟動ssh? 例:

public static void main(String[] args) {
  String[][] data = new String[][]{new String[]{"user@server1", "2000:server1:30"},
          new String[]{"user2@server4", "2000:server4:30"}};
  Process[] processes = new Process[data.length];
  for (int i=0; i<data.length; i++) {
    processes[i] = Runtime.getRuntime().exec("ssh", data[i][0], "-L", data[i][1], "-N");
  }
  //do something else, for example, wait for user interaction here
  for (int i=0; i<data.length; i++) {
    processes[i].destroy();
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM