我正在尝试将JProfiler连接到运行在我称之为远程的服务器上的JVM。此服务器只能通过我的工作站(本地)通过另一台我称之为中间的服务器访问。我将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环境变量和您的端口配置
我没有绑定到本地端口8849的任何其他程序,除了我的SSH隧道,我已经确认SSH隧道本身应该正常工作 - 我能够转发测试HTTP服务器的连接通过类似配置的隧道远程到本地。
我发现了this类似的问题,但未提供任何解决方案。
我的配置中缺少什么?
答案 0 :(得分:1)
使用
建立直接隧道ssh -t user@remote -L [localPort]:localhost:[remotePort] -N
2跳隧道是使用链式ssh命令构建的:
ssh -t user@middle -L [localPort]:localhost:[remotePort] \
ssh -t user@remote -L [remotePort]:localhost:[remotePort] -N
其中localPort
是您要在本地使用的端口,remotePort
是配置文件代理正在侦听的端口。所有这些都在本地计算机上的单个命令中执行。可以使用第一行中的其他ssh调用添加更多跃点。对于整个命令,必须只有一个尾随-N
。
这种方法适用于JProfiler。
如果隧道出现故障或者分析代理没有侦听,您将收到您提到的消息,因为在SSH隧道的情况下连接失败的方式。