java - JMX连接拒绝,仅在链接Jaas Kerberos模块时
尝试使用JMX访问公开的mbean进程时出现以下错误。
java.rmi.ConnectException: Connection refused to host: 10.65.13.201; nested exception is:
java.net.ConnectException: Connection refused: connect
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:601)
at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:198)
at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:184)
at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:322)
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
at sun.tools.jconsole.ProxyClient.checkSslConfig(ProxyClient.java:217)
at sun.tools.jconsole.ProxyClient.<init>(ProxyClient.java:110)
at sun.tools.jconsole.ProxyClient.getProxyClient(ProxyClient.java:463)
at sun.tools.jconsole.JConsole.run(JConsole.java:510)
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)
at java.net.Socket.connect(Socket.java:478)
at java.net.Socket.<init>(Socket.java:375)
at java.net.Socket.<init>(Socket.java:189)
at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:22)
at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:128)
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:595)
... 8 more
我在Unix服务器上,我正在使用以下命令运行:
java -jar MBeanSecure.jar
-Dcom.sun.management.jmxremote.access.file=jmxremote.access
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=1234
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.security.auth.login.config=jaas-krb5.conf
-Dcom.sun.management.jmxremote.login.config=client
-Djava.rmi.server.hostname=10.65.13.201
com.ba.running.RunningImplem
我的主机名-i给了我:
$ hostname -i
10.65.13.201
我的所有配置文件都设置为rw 0600,所以这是:
jaas-krb5.conf
jmxremote.access
它似乎特定于Jaas配置设置,因为我可以运行jar并在使用以下命令时访问它:
java -jar
-Dcom.sun.management.jmxremote.port=1234
-Dcom.sun.management.jmxremote.password.file=jmxremote.password
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.access.file=jmxremote.access
-Dcom.sun.management.jmxremote=true MBeanSecure.jar
然后我可以通过jconsole连接而没有问题。所以它似乎不是服务器上的配置设置,我相信它是我的Jaas登录模块特有的。
jaas-krb5.conf:
client{
com.sun.security.auth.module.Krb5LoginModule required;
};
server{
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=false
storeKey=false
principal="principal@intranet.com";
};
我还可以确认Krb5LodingModule是否正常工作并与KDC进行通信。
因此在启动jar时似乎与JMX配置错误,我的问题是什么呢?
最佳答案:
1 个答案:
答案 0 :(得分:0)
解决:
错误的启动脚本:
java -classpath MBeanSecure.jar
-Djava.rmi.server.hostname=<hostname>
-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.port=<port>
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.security.auth.login.config=../path/to/jaaskrb5.conf
-Djava.security.krb5.conf=../path/to/krb5.conf
-Dcom.sun.management.jmxremote.login.config=client
-Djava.net.preferIPv4Stack=true
-Dcom.sun.management.jmxremote.access.file=../path/to/jmxremote.access com.ba.running.RunningImplementation
本文经用户投稿或网站收集转载,如有侵权请联系本站。