如何在两跳SSH隧道中使用JProfiler
我正在尝试将JProfiler连接到运行在我称之为远程服务器的服务器上的JVM。 该服务器只能通过我称之为中间的另一台服务器从我的工作站( 本地 )访问。 我将JProfiler连接到远程的计划如下:
-
在远程安装JProfiler检测
-
建立从本地 , 中间到远程的 SSH隧道:
ssh -v -N -L 8849:[remote's private address (192.168... etc)]:8849 [middle]
- 在
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隧道的情况下连接失败的方式。