【问题标题】:Cannot remotely debug JVM via SSH tunnel无法通过 SSH 隧道远程调试 JVM
【发布时间】:2011-10-04 08:59:26
【问题描述】:

我需要通过 SSH 隧道使用远程调试器调试 Java 应用程序。我在我的 PC 上配置了 putty,我可以使用隧道连接到服务器上运行的任何其他服务,但是 eclipse 远程调试器无法连接。

在服务器端,我使用 Java 1.6.0_21-b06,并带有以下调试选项:

-Xrunjdwp:transport=dt_socket,address=8686,server=y,suspend=n

在我的笔记本电脑上,ssh 隧道配置为:

L8686 IP_ADDR:8686

通过 ssh 隧道运行会话时,JVM 调试器是否有任何限制?

还有一件事,当我尝试连接时,在服务器控制台上我可以看到以下日志消息:

Listening for transport dt_socket at address: 8686

【问题讨论】:

  • 您检查过防火墙/防病毒/病毒等所有恶意软件吗?

标签: java debugging ssh jvm


【解决方案1】:

我有同样的情况,一切正常,这是我运行我的 java 应用程序的方式:

 java -Xmx120m -agentlib:jdwp=transport=dt_socket,server=y,address=8000 -jar bla.jar

可能最相关的部分是 -agentlib 部分。

【讨论】:

  • 出于安全原因不建议这样做。只允许本地 JVM 附加并建立到远程主机的 SSH 隧道。
【解决方案2】:

您可以尝试L8686 localhost:8686,因为 JVM 可能会拒绝来自非本地地址的连接吗?请注意,'localhost' 是从服务器的角度来看的地址。

【讨论】:

    【解决方案3】:

    Listening for transport dt_socket at address: 8686 通常在 VM 启动或现有调试会话关闭并且 VM 再次开始侦听调试连接时发生。也许在服务器上运行tcpdump 可以提供一个线索,即哪个对等方关闭了连接,并且在那一侧看起来更深一些。

    【讨论】:

      猜你喜欢
      • 2015-12-02
      • 2011-08-12
      • 1970-01-01
      • 2015-12-01
      • 2020-07-05
      • 2017-03-04
      • 2012-08-26
      • 2021-12-27
      • 2019-07-15
      相关资源
      最近更新 更多