使用 SOCKS 将 jconsole 连接到 Amazon EC2

使用 SOCKS 将 jconsole 连接到 Amazon EC2

我正在尝试使用 jconsole 通过 SSH 创建的 socks 代理查看 EC2 实例上的统计信息。我尝试了以下链接中提到的各种脚本,但无济于事:

http://simplygenius.com/2010/08/jconsole-via-socks-ssh-tunnel.html

http://gabrielcain.com/blog/2010/11/02/using-ssh-proxying-to-connect-jconsole-to-remote-cassandra-instances/

我正在运行ssh -f -ND 8123 myuser@mymachine并验证至少 Firefox 可以通过它作为代理。

然后我跑

jconsole -J-DsocksProxyHost=localhost -J-DsocksProxyPort=8123 service:jmx:rmi:///jndi/rmi://ec2-XX-XX-XXX-XXX.compute-1.amazonaws.com:8080/jmxrmi

我在 EC2 实例上运行 netstat -n,看到我的机器创建了一个连接。但是,连接最终消失了,我从 ssh 隧道中收到“通道 2:打开失败:连接失败:操作超时”的消息。

我已经通过安全组打开了 jmx 端口,并且已经检查了 EC2 实例上的端口以确保它已打开(通过 telnet 连接到它)。

我不确定下一步该看哪里。我需要在 sshd_config 或 ssh_config 中启用某些属性来建立隧道吗?或者 Mac OS X 中的任何内容?

我觉得自己是个菜鸟,但系统管理真的不是我的强项。我花了好几个小时,却没能让它工作。

答案1

在您的 Cassandra (v0.8.5) 节点上,查找以下行$CASSANDRA_HOME/bin/conf/cassandra-env.sh

# add this if you're having trouble connecting:
JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=<public name>"

确保第二行取消注释并设置为公共 DNS 名称您的 ec2 实例。

相关内容