java - JMX连接拒绝,仅在链接Jaas Kerberos模块时

java - JMX连接拒绝,仅在链接Jaas Kerberos模块时,第1张

尝试使用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
本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复