强制 Apache ActiveMQ 的 JMX 只能从 localhost 访问
Posted
技术标签:
【中文标题】强制 Apache ActiveMQ 的 JMX 只能从 localhost 访问【英文标题】:Force JMX of Apache ActiveMQ to only be accessible from localhost 【发布时间】:2021-05-12 13:27:15 【问题描述】:我有一个运行 Apache ActiveMQ 的 RHEL6 服务器,但我找不到禁用远程访问 JMX 的方法。 我可以完全禁用 JMX,但这会限制 ActiveMQ 的功能,它使用 JMX 访问代理以获取状态信息,或传达关闭请求(ActiveMQ 回退到 SIGKILL!)。 我想让 ActiveMQ 可以通过 JMX 访问,但只能从 localhost 访问。
根据Apache's website,默认情况下应该禁用远程连接,但我可以从其他机器连接到默认的 1099 端口。据我所知,JMX 的设置保留为默认设置。
我知道一些类似的问题,但建议的解决方案对我没有用,尤其是:
添加-Dcom.sun.management.jmxremote.host=localhost
和/或 -Dcom.sun.management.jmxremote.local.only=true
没有帮助
添加 -Djava.rmi.server.hostname=localhost
也无济于事
尽管这个 solution 和一些 cmets 似乎表明我正在运行的 Java 版本 (>8u102) 修复了一些已知问题。
一些解决方案谈到有必要切换到“编码”(例如,this 或 this),但我不清楚如何将这种方法与 ActiveMQ 一起使用。
【问题讨论】:
【参考方案1】:在 bin/env(Apache ActiveMQ 构建)中添加:
-Dcom.sun.management.jmxremote.host=127.0.0.1
然后观察JMX端口绑定only到本地ip
% netstat -na | grep 1099
tcp4 0 0 127.0.0.1.11099 *.* LISTEN
【讨论】:
我又试了一次,还是不行。 netstat 显示本地地址0.0.0.0:1099
和国外地址0.0.0.0:*
以上是关于强制 Apache ActiveMQ 的 JMX 只能从 localhost 访问的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 jmx 从 activemq 获取消费者列表和消费者“选择器”?
org.apache.tomcat.jdbc.pool.jmx.JmxUtil.registerJmx Jmx 注册失败