我试图通过ssh隧道监视运行在不同服务器上的多个JVM。
感谢这里的一位UNIX专家,我已经通过以下方法为单个服务器实现了这个运行:
jstatd这就行了。现在,当我尝试并隧道到第二个服务器时,我尝试:
然而,最后一步抱怨的是:
bind: Address already in use
channel_setup_fwd_listener: cannot listen to port: 9696有人做过类似的事吗?
之所以如此复杂,是因为jstatd是一个RMI服务器应用程序:
http://download.oracle.com/javase/1.5.0/docs/tooldocs/share/jstatd.html
与RMI应用程序一样,这些应用程序使用RMI注册表进行注册。通过防火墙使用rmi需要我使用SOCKS,如下所述:
http://download.oracle.com/javase/1.4.2/docs/guide/rmi/faq.html#firewallOut
不幸的是,visualvm只允许我设置SOCKS代理端口一次,-D选项不允许我将相同的本地端口转发到两个服务器.
发布于 2011-08-23 18:06:38
我认为你的计算机(计算机A),比如说两个服务器(A和B)不能在某个端口上直接连接,所以想要通过SSH隧道到它们,对吗?
如果是这样的话,您可以在不同的本地端口上使用-L而不是-D从计算机(每个目标服务器)创建两个隧道,然后在监视工具中连接到本地机器(没有代理设置),就像要检查的远程服务器一样。
ssh -L 9000:localhost:<local port jstatd listens on> user@server1
ssh -L 9001:localhost:<local port jstatd listens on> user@server2然后使用本地监视器连接到localhost:9000和localhost:9001,这些隧道将您连接到目标jstatd。
如果有一个中间服务器,然后有一个两跳隧道,
ssh -L 9000:server1:<local port jstatd listens on> user@bastion-host
ssh -L 9001:server2:<local port jstatd listens on> user@bastion-host嗯,如果bastion主机可以和所有的JVM对话,那么
ssh -D 9000 user@bastion-host就足以创建一个socks代理,然后您就可以通过端口9000使用了。
发布于 2016-01-19 06:44:19
最后一步说得足够了:它无法在端口9696开始监听。这是因为如果这是您的第二个隧道,您应该使用另一个端口,而9696正在处理第一个端口。
https://unix.stackexchange.com/questions/19242
复制相似问题