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

Posted

技术标签:

【中文标题】如何在两跳 SSH 隧道上使用 JProfiler【英文标题】:How to use JProfiler over two-hop SSH tunnel 【发布时间】:2015-01-24 02:57:44 【问题描述】:

我正在尝试将 JProfiler 连接到在我将调用 remote 的服务器上运行的 JVM。这个服务器只能从我的工作站(本地)通过另一个我称为middle的服务器访问。我将 JProfiler 连接到 remote 的计划是这样的:

    远程

    上安装 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 服务器的连接通过类似配置的隧道远程本地

我找到了this 类似的问题,但没有提供解决方案。

我的配置中缺少什么?

【问题讨论】:

【参考方案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 隧道的情况下连接失败。

【讨论】:

以上是关于如何在两跳 SSH 隧道上使用 JProfiler的主要内容,如果未能解决你的问题,请参考以下文章

通过 SSH 隧道的 MySQL 连接

如何在MacOS上创建ssh隧道? [关闭]

如何关闭这个 ssh 隧道? [关闭]

如何配置系统通过 ssh 反向隧道/代理使用 git?

虚拟环境实现SSH隧道

如何使用 Fabric 通过 2 个网关将 SSH 隧道连接到远程主机?