与其每次我运行jstatd时都没有创建防火墙规则(因为它每次都会烦人地选择一个新的随机端口),而是让它与SSH隧道一起使用。
首先,我在服务器上运行了jstatd来查找需要建立隧道的端口。这是通过(首先是)创建一个名为tools.policy的策略文件,其内容如下:
grant prebase "file:${java.home}/../lib/tools.jar" { permission java.security.AllPermission;};然后运行以下命令:
jstatd -J-Djava.security.policy=tools.policy
然后,我确定通过运行jstatd使用了随机端口
sockstat | grep jstat(
netstat不确定,可能需要在Linux 上使用它)。
然后说随机端口是55663,我在本地计算机上创建了两个SSH隧道,一个用于标准jstatd端口1099,另一个用于55663,方法是在两个终端窗口中运行以下命令(在Windows上未完成此操作,但是我很确定腻子可以做到):
ssh -L 1099:localhost:1099 login_name@host_name
ssh -L 55663:localhost:55663 login_name@host_name
打开两个隧道后,我打开了VisualVM,然后在左侧的“本地”计算机上单击鼠标右键,然后选择“添加jstatd连接”。我单击了右侧的“添加默认”按钮,并确保将端口设置为1099。单击“确定”按钮进行保存,然后立即在“本地”部分中看到我的远程Java进程。



