如何通过IntelliJ IDEA对私钥SSH验证Linux服务器上的Java应用进行远程调试
Linux服务器Java应用IDEA远程调试配置方案
第一步:给服务器上的Java应用添加调试启动参数
远程调试必须先给Java应用添加JDWP调试代理启动参数,根据JDK版本不同参数略有区别:
- JDK 8及更早版本:
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar your-app.jar - JDK 9及更高版本(需要允许外部IP访问必须加
*):java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
参数说明:suspend=n表示应用启动时不挂起等待调试连接,5005为调试端口可自行修改。如果不想对外暴露调试端口,可选择下文的SSH隧道方案,不需要额外开放防火墙端口。
第二步:IDEA端调试配置(适配私钥SSH登录场景)
你截图中打开的就是IDEA的Remote JVM Debug配置项,可按以下两种场景调整配置:
方案1:调试端口已对外开放
- 配置页填写服务器公网IP、调试端口(比如上面的5005),选择和服务器匹配的JDK版本
- 保存配置后直接启动调试即可
方案2:调试端口未对外开放(更安全,推荐)
不需要修改防火墙规则,直接通过SSH隧道转发调试流量:
- 在配置页勾选「SSH tunnel」选项
- 填写SSH连接信息:
- Host:服务器公网IP
- Port:SSH端口默认22,有修改则填自定义端口
- Username:SSH登录用户名
- 认证方式选择「Key pair」,指定你的
private_key.txt私钥文件路径,私钥有密码则填写对应密码
- 调试端口仍填写应用配置的调试端口(比如5005),IDEA会自动完成端口转发
- 保存配置后启动调试即可
常见问题排查
- 服务器执行
netstat -tunlp | grep 5005确认调试端口处于监听状态 - 本地私钥文件权限需设置为600,避免IDEA读取权限报错
- JDK9+版本如果
address参数前没加*,默认仅允许本地访问,远程会连接失败
内容的提问来源于stack exchange,提问作者java-dev-ua
相关产品推荐
相关产品推荐

