当前位置: 首页 > 面试题库 >

使用VisualVM通过防火墙连接到远程jstatd实例

方飞翼
2023-03-14
问题内容

我正在写这个问题并回答它,因为我花了几个小时使它今天开始工作,而我在这里找不到的答案对我有用。希望这对其他人有帮助。如果您有除我最终使用的解决方案以外的其他解决方案,请随时回答此问题。如果您的情况更好,我会接受您的情况。

问题:我正在尝试使用VisualVM和jstatd监视我的FreeBSD服务器上的一些自制Java应用程序(这也应适用于Linux服务器),但是即使在我之后,我也无法使VisualVM列出服务器上的进程在防火墙中转发了已分配和随机的jstatd端口,可以看到正在使用sockstat建立的连接。


问题答案:

与其每次我运行jstatd时都没有创建防火墙规则(因为它每次都会烦人地选择一个新的随机端口),而是让它与SSH隧道一起使用。

首先,我在服务器上运行了jstatd来查找需要建立隧道的端口。这是通过(首先是)创建一个名为tools.policy的策略文件,其内容如下:

grant codebase "file:${java.home}/../lib/tools.jar" {
    permission java.security.AllPermission;
};

然后运行以下命令: jstatd -J-Djava.security.policy=tools.policy

然后,我确定通过运行jstatd使用了随机端口sockstat | grep jstatnetstat不确定,可能需要在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进程。



 类似资料:
  • 问题内容: 可以说我有两台计算机。 他们通过彼此了解公共IP和私有IP 。 一个客户端正在侦听,另一个客户端正在发送一些字符串。 我希望通过UPD打孔看到这种情况: 能否再有一个伪示例说明如何通过对称NAT进行打孔?假设将有服务器S帮助猜测端口号并在客户端A和客户端B之间建立连接。 如果您还要考虑双重NAT,那将是很好的。 注意: 您可以使用STUN查找IP和端口,但是您必须编写自己的代码,以通过

  • 远程计算机上的statd可能没有正确启动,visualvm用户界面没有添加连接。 在远程计算机上,我为jstatd创建了一个策略文件: 然后执行jstatd:./jstatd-p 1199-j-djava.security.policy=/home/jonathan/jstatd.policy 它似乎正在运行,没有错误,我得到当没有指定端口号或策略文件。 在visualvm中,我可以添加远程主机,

  • 问题内容: 我正在尝试使用jstatd用jps查询远程JVM,以便最终使用VisualVM对其进行监视。 我让jstatd使用以下安全策略运行: jstatd在带有1.6.0_10版本的HotSpot vm的64位Linux机器上运行。jstatd命令是: 我正在尝试从Windows 7计算机运行jps。由于防火墙的限制,我通过SSH隧道将RMI数据通过隧道传输到我的Windows计算机,这样jp

  • 我们正在尝试使用Azure blob存储连接器从powerapps连接到blob存储。我已经检查了我在powerapps的哪个地区,这是欧洲。所以我已经将这个azure文档中的所有IP都列入了白名单,但仍然没有访问权限。屏幕错误 当我禁用blob上的防火墙时,一切正常。还有一个我丢失的IP列表?

  • 基本概念 netfilter Linux 内核包含一个强大的网络过滤子系统 netfilter。netfilter 子系统允许内核模块对遍历系统的每个网络数据包进行检查。这表示在任何传入、传出或转发的网络数据包到达用户空间中的组件之前,都可以通过编程方式检查、修改、丢弃或拒绝。netfilter 是 RHEL 7 计算机上构建防火墙的主要构建块。 尽管系统管理员理论上可以编写自己的内核模块以与 n

  • 我试图在我的MAC上使用JProfiler远程连接到防火墙后面的机器,只能通过Linux机器访问。 我设置了一个直接SSH隧道,如下所示: 有什么想法可以绕过这个吗? (远程机器使用Java1.7,而我的Mac使用Java1.8)。两台机器都使用jprofiler8