使用 JSch 通过 SSH 隧道访问生产中的 JMX

发布于 2024-09-30 03:18:39 字数 399 浏览 6 评论 0原文

我正在尝试自动化使用 JMX 执行某些操作的步骤。

它适用于开发环境。但是当涉及到受防火墙保护的生产时,我需要创建一个 SSH 隧道,然后只有我可以访问 JMX 控制台。

早些时候,我使用 putty 或 ssh 创建隧道并在本地运行我的 java 程序。由于我们使用了 1-2 个主机,所以比较容易。现在已经变成了10个主机。现在我不想每次都创建隧道并断开连接并运行程序。

我想做的是,使用 JSch 自动创建 SSH 隧道,并将 JMX 与 java 程序连接。我尝试这样做,但它不起作用。

我正在得到 java.rmi.ConnectException:连接拒绝主机:localhost;嵌套异常是: java.net.ConnectException:连接被拒绝:连接

可以这样做吗?

I am trying to automate a step of doing some things with JMX.

It works for development environment. but when it comes to Production which is protected behind firewall, i need to make a SSH tunnel and then only i can access the JMX console.

Earlier, i used putty or ssh to create tunnel and run my java program locally. Since we used 1-2 host, it was easier. now it became upto 10 host. now that i dont want to create tunnel every time and disconnect and run the program.

what i wanted to do is, automatically create SSH tunnel using JSch and connect JMX with the java program. i tried to do this but its not working.

I am getting
java.rmi.ConnectException: Connection refused to host: localhost; nested exception is:
java.net.ConnectException: Connection refused: connect

it is possible to do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

同展鸳鸯锦 2024-10-07 03:18:39

为什么不使用 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();
  }
}

Why don't you use Runtime.exec() to start ssh? Example:

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();
  }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文