无法通过Intellij连接远程Linux服务器进行debug的问题求助
IDEA远程调试Java应用连接超时解决步骤
1. 排查网络连通性(90%以上问题都是该类原因)
- 先在本地机器执行端口连通性测试,运行命令:
telnet 远程服务器公网IP 5005或者nc -zv 远程服务器公网IP 5005,如果返回连接失败,直接定位为网络链路问题 - 检查远程服务器本地防火墙规则:
- 若服务器用firewalld,执行
sudo firewall-cmd --list-ports确认5005/tcp已放通,未放通则执行:sudo firewall-cmd --add-port=5005/tcp --permanent && sudo firewall-cmd --reload - 若服务器用ufw,执行
sudo ufw status确认5005/tcp已放通,未放通则执行:sudo ufw allow 5005/tcp
- 若服务器用firewalld,执行
- 若为云厂商服务器,登录云控制台的安全组配置页,添加入方向规则放行5005端口,源地址建议填写本地公网IP,避免端口公网暴露风险
- 本地如果使用VPN办公,先临时断开VPN或者将远程服务器IP加入代理豁免列表,避免调试流量被代理中转
- 登录远程服务器执行端口监听检查:
ss -tulpn | grep 5005,确认Java进程监听的是0.0.0.0:5005而非127.0.0.1:5005,如果是回环地址仅支持本地连接
2. 核对Java调试启动参数
- 若远程服务器JDK版本为8及以下,部分小版本不支持
address=*:5005的写法,直接替换为address=0.0.0.0:5005后重启应用即可 - 确认参数无写反:
server=y代表远程应用作为调试服务端等待连接,suspend=n代表应用启动时不等待调试连接,两个参数错误会导致调试服务无法正常启动
3. 核对IDEA调试配置
- 确认IDEA远程调试配置里的Host为远程服务器正确公网IP/域名,Port和启动参数里的5005完全一致
- 确认IDEA调试配置选择的JDK大版本,和远程服务器运行应用的JDK大版本保持一致,大版本差异会导致连接失败
- 关闭IDEA的全局代理设置,或者将远程服务器IP加入不代理列表,避免代理影响调试连接
4. 兜底验证方案
如果以上排查都完成后仍无法连接,登录远程服务器本地执行调试连接测试:jdb -attach 127.0.0.1:5005,如果能正常连接说明调试服务本身无问题,问题一定出在本地到服务器的中间网络链路,再回头排查路由、运营商封禁、端口映射等规则即可。
内容的提问来源于stack exchange,提问作者Артём Смирнов
相关产品推荐
相关产品推荐

