2017-08-25 173 views
1

我有一个典型的内部群集,包含登录节点和多个计算节点。首先,我运行带有以下参数的JVM实例,让我的IntelliJ调试器连接到它。调试 - IntelliJ无法连接到远程服务器上启用调试的JVM

-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005 

此登录节点有一个可公开访问的地址,我主要用它来启动作业。但是,当我尝试将IntelliJ调试器附加到此节点上的JVM实例时,该连接只是它的时间并且无法连接,而我的JVM实例确实以挂起模式启动,等待调试器连接到它。

IntelliJ Remote debug configuration

更新: 最初的问题似乎是,我得到无法访问超过22端口,我用它来使用SSH连接它的其他我的服务器上的任何其他端口。无论如何,我能够创建一个SOCK5代理,配置的IntelliJ使用该代理,然后成功地测试连接,以及,如下所示:

Testing the connection at the host:port the debugger is listenning at

调试控制台上的输出显示的IntelliJ是能够成功通过HTTP请求访问指定主机名上的端口,而不是JWP端口。

Debugger console output

然而,当我再进行连接调试到同一主机:端口组合,我不能这样做,收到以下错误:

Debugger error

我有也尝试设置suspend=n但无济于事。

+0

你可以从那里的IntelliJ IDEA运行的机器远程登录到指定的地址/端口?如果没有,这是一个与IDE无关的防火墙/网络问题。 – CrazyCoder

+0

像所描述的[这里](https://stackoverflow.com/questions/975271/remote-debugging-a-java-application),尝试用'suspend = n'启动JVM。 – Sam

+0

@CrazyCoder,请查看我对原始问题所做的更新。 –

回答

2

ssh -L 5005:localhost:5005 [email protected]

将映射到localhost:5005端口5005myserver.com(还localhost接口的myserver.com)。这样在IntelliJ IDEA调试器中,您将连接到localhost(在主机字段中指定它)端口5005,并且连接将被转发到调试器在localhost:5005上侦听的远程服务器。

here更多细节SSH隧道是如何工作的