如何在两跳SSH隧道中使用JProfiler

我正在尝试将JProfiler连接到运行在我称之为远程服务器的服务器上的JVM。 该服务器只能通过我称之为中间的另一台服务器从我的工作站( 本地 )访问。 我将JProfiler连接到远程的计划如下:

  1. 远程安装JProfiler检测

  2. 建立从本地中间远程的 SSH隧道:

    ssh -v -N -L 8849:[remote's private address (192.168... etc)]:8849 [middle]

  3. localhost:8849上建立一个新的JProfiler会话,选择“立即启动,稍后用JProfiler GUI连接”

但是,我最终得到一个错误:

连接错误

使用旧版本的本机库或其他应用程序正在侦听端口8849.请检查您的DYLD_LIBRARY_PATH环境变量和端口配置

除了我的SSH隧道之外,我没有绑定到本地端口8849的任何其他程序,并且我已经确认SSH隧道本身应该正常工作 – 我能够将测试HTTP服务器的连接从远程转发到本地通过类似配置的隧道。

我发现了类似的问题,但没有提供解决方案。

我的配置中缺少什么?

建立直接隧道

 ssh -t user@remote -L [localPort]:localhost:[remotePort] -N 

使用链式ssh命令构建2跳隧道

 ssh -t user@middle -L [localPort]:localhost:[remotePort] \ ssh -t user@remote -L [remotePort]:localhost:[remotePort] -N 

其中localPort是您要在本地使用的端口, remotePort是配置文件代理正在侦听的端口。 所有这些都在本地计算机上的单个命令中执行。 可以使用第一行中的其他ssh调用添加更多跃点。 对于整个命令,必须只有一个尾随-N

这种方法适用于JProfiler。

如果隧道出现故障或者分析代理程序没有侦听,您将收到您提到的消息,因为在SSH隧道的情况下连接失败的方式。