Доступ к JMX в производстве через SSH-туннель с использованием JSch - PullRequest
3 голосов
/ 01 ноября 2010

Я пытаюсь автоматизировать этап выполнения некоторых действий с JMX.

Это работает для среды разработки.но когда дело доходит до Production, которое защищено брандмауэром, мне нужно создать SSH-туннель, и тогда только я смогу получить доступ к консоли JMX.

Раньше я использовал putty или ssh для создания туннеля и запуска моей Java-программына местном уровне.Так как мы использовали 1-2 хоста, было проще.сейчас стало до 10 хозяев.теперь, когда я не хочу каждый раз создавать туннель, отключать и запускать программу.

я хотел автоматически создать SSH-туннель с помощью JSch и подключить JMX к java-программе.Я пытался сделать это, но он не работает.

Я получаю java.rmi.ConnectException: Соединение отказано в хосте: localhost;Вложенное исключение: java.net.ConnectException: соединение отклонено: connect

возможно ли это сделать?

1 Ответ

1 голос
/ 01 ноября 2010

Почему вы не используете 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();
  }
}
...