【发布时间】:2019-06-25 05:23:32
【问题描述】:
我正在尝试通过 SSH 隧道与在远程 docker 容器内运行的进程建立 JMX 连接。从 Java Mission Control、VisualVM 或 JConsole 连接超时,我无法连接。
如果我在 JConsole(或任何其他)中直接连接到远程计算机 IP,则建立 JMX 连接。当我使用 SSH 隧道时会出现问题。
我正在建立一个从我的本地机器到远程机器的 SSH 隧道
ssh username@remote-machine-ip -L 9090:127.0.0.1:9090
在 docker 容器中,我公开了 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 中它失败并显示“连接失败”。
知道我做错了什么吗?
【问题讨论】:
标签: docker ssh jmx ssh-tunnel docker-container