Есть ли способ установить JMX-соединение через SSH с удаленным процессом, работающим внутри контейнера Docker? - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь установить соединение JMX через туннель SSH с процессом, работающим внутри удаленного док-контейнера.Из Java Mission Control, VisualVM или JConsole истекает время соединения, и я не могу подключиться.

Соединение JMX устанавливается, если я подключаюсь в JConsole (или любом другом) напрямую к удаленной машинеф.Проблема возникает, когда я использую SSH-туннель.

Я устанавливаю SSH-туннель от локального компьютера до удаленного компьютера с помощью

ssh username@remote-machine-ip -L 9090:127.0.0.1:9090

В контейнере докера я открываюпорт 9090, и я использую следующие аргументы для JVM:

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote.port=9090
-Dcom.sun.management.jmxremote.rmi.port=9090
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=127.0.0.1
-Djava.rmi.server.useLocalHostname=true

В -Djava.rmi.server.hostname Я уже пытался использовать 127.0.0.1, localhost, хост хоста Docker-контейнеров ip ...

В JConsole я использую 127.0.0.1:9090 для подключения.

Запуск tcpdump на удаленной машине. Я могу перехватить некоторые пакеты, поступающие на порт 9090, но в JConsole происходит сбой с сообщением «Ошибка подключения».

Есть идеи, что я делаю не так?

1 Ответ

0 голосов
/ 01 февраля 2019

Все было правильно ... более или менее.Моя локальная машина работает под управлением Windows, и я создавал SSH-туннель на Git Bash!Если я создаю SSH-туннель с помощью командной строки Windows или Putty, он работает просто отлично ...

...