我正在尝试使用JMX自动执行某些操作。
适用于开发环境。但是当谈到受防火墙保护的生产时,我需要建立一个SSH隧道,然后才能访问JMX控制台。
之前,我使用putty或ssh创建隧道并在本地运行我的java程序。由于我们使用1-2主机,因此更容易。现在它变成了10个主机。现在我不想每次都创建隧道并断开连接并运行程序。
我想要做的是,使用JSch自动创建SSH隧道,并将JMX与java程序连接。我试图这样做,但它不起作用。
我到了 java.rmi.ConnectException:连接拒绝主机:localhost;嵌套异常是: java.net.ConnectException:连接被拒绝:连接
可以这样做吗?
答案 0 :(得分:1)
为什么不使用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();
}
}