在Linux上开始使用JMX身份验证时无法连接到JMX

麦可

我开始使用JMX身份验证时,我的JMX客户端无法连接到JMX服务器。我使用Java 8和Centos6。

我已经配置了以下设置:

JAVA_OPTS="${JAVA_OPTS} -Dcom.sun.management.jmxremote.authenticate=true  -Dcom.sun.management.jmxremote.password.file=<path to password file> -Dcom.sun.management.jmxremote.access.file=<path to access file>"

不幸的是,我的JMX客户端无法连接到JMX服务器,但有以下例外:

java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: localhost; nested exception is:
        java.net.ConnectException: Connection refused]
        at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:369)
        at javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:270)
        at org.apache.catalina.ant.jmx.JMXAccessorTask.createJMXConnection(JMXAccessorTask.java:384)
        at org.apache.catalina.ant.jmx.JMXAccessorTask.accessJMXConnection(JMXAccessorTask.java:439)
        at org.apache.catalina.ant.jmx.JMXAccessorTask.getJMXConnection(JMXAccessorTask.java:477)
        at org.apache.catalina.ant.jmx.JMXAccessorTask.execute(JMXAccessorTask.java:345)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.Target.execute(Target.java:435)
        at org.apache.tools.ant.Target.performTasks(Target.java:456)
        at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
        at org.apache.tools.ant.Project.executeTarget(Project.java:1364)
        at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
        at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
        at org.apache.tools.ant.Main.runBuild(Main.java:851)
        at org.apache.tools.ant.Main.startAnt(Main.java:235)
        at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
        at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
Caused by: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: localhost; nested exception is:
        java.net.ConnectException: Connection refused]
        at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:122)
        at com.sun.jndi.toolkit.url.GenericURLContext.lookup(GenericURLContext.java:205)
        at javax.naming.InitialContext.lookup(InitialContext.java:417)
        at javax.management.remote.rmi.RMIConnector.findRMIServerJNDI(RMIConnector.java:1957)
        at javax.management.remote.rmi.RMIConnector.findRMIServer(RMIConnector.java:1924)
        at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:287)
        ... 22 more
Caused by: java.rmi.ConnectException: Connection refused to host: localhost; nested exception is:
        java.net.ConnectException: Connection refused
        at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:619)
        at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:216)
        at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202)
        at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:342)
        at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
        at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:118)
        ... 27 more
Caused by: java.net.ConnectException: Connection refused
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
        at java.net.Socket.connect(Socket.java:589)
        at java.net.Socket.connect(Socket.java:538)
        at java.net.Socket.<init>(Socket.java:434)
        at java.net.Socket.<init>(Socket.java:211)
        at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:40)
        at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:148)
        at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:613)
        ... 32 more
麦可

为解决此问题,我仔细阅读了以下文档:http : //docs.oracle.com/javase/7/docs/technotes/guides/management/agent.html#gdeup

关于密码文件的以下注释非常重要:

You must ensure that only the owner has read and write permissions on this file, since it contains the passwords in clear text. For security reasons, the system checks that the file is only readable by the owner and exits with an error if it is not. 

我为用户设置了读取权限,并且我的客户端成功连接到JMX服务器:

chmod 400 <path to password file>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法连接到远程JMX

如何使用JMX连接到localhost jvm上的Java程序?

Tomcat JMX连接-身份验证失败

JMX:无法从Windows盒连接到Linux系统上的JMX端口

从Go连接到远程Linux MongoDb(无身份验证)

连接到MongoDB时身份验证始终失败

启用身份验证后无法连接到MongoDB

使用oauth令牌通过imap连接到Gmail时,身份验证失败

连接到MongoDB服务集群时出错:SASL身份验证步骤上服务器返回错误:身份验证错误身份验证失败

无法使用AppService中的Active Directory集成身份验证连接到Azure SQL Server

SSIS无法使用SQL Server身份验证连接到SSMS

.Net Core Linux容器无法使用SQL身份验证连接到SQL Server

使用SSL / TLS上的证书身份验证将Tableau Desktop连接到PostgreSQL DB

使用OKTA推送身份验证在Linux盒子中连接到AWS-VPN

无法使用SCRAM身份验证将客户端连接到kafka服务器

使用用户身份验证小牛连接到WPA2时出现问题?

使用2要素身份验证帐户将Adium连接到Google Talk无法正常工作

无法连接到远程JMX主机

NodeJS:如何使用Mac上的Windows身份验证/ trustedConnection连接到MSQL数据库

Windows环境中的JMX身份验证文件路径

使用Windows身份验证的IIS PHP无法连接到SQL Server 2008R2

在Linux中连接到Windows AD的身份验证机制?

在Linux上通过附加身份验证连接到Wifi

使用身份验证连接到站点时,Swift 3 NSURLSession/NSURLConnection HTTP 加载失败

无法使用公钥身份验证通过 SSH 连接到 Windows

使用 JDBC 和 Kerberos 身份验证连接到 Hive 时出现异常

无法通过 mysql CLI 工具使用 IAM 身份验证连接到 RDS 实例

无法使用通用身份验证连接到设备“192.168.1.17”

无法使用工作帐户身份验证连接到 Azure webapp