如何通过跳板机SSH连接,在IntelliJ中调试EC2上的Java应用
通过跳板机在IntelliJ远程调试EC2上的Java应用
1. 配置EC2实例的Java应用启动参数
- 修改EC2上Java应用的启动脚本或服务配置,添加远程调试的JPDA参数,确保应用启动时开启调试监听:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5005 - 参数说明:
suspend=n:应用启动时不暂停,直接运行;若需等待调试器连接再启动,改为suspend=yaddress=0.0.0.0:5005:让实例监听所有网卡的5005端口,也可自定义其他端口,但需和后续步骤保持一致
- 若应用通过systemd管理:
- 编辑服务文件(如
/etc/systemd/system/your-app.service),在ExecStart行末尾添加上述参数 - 执行
systemctl daemon-reload && systemctl restart your-app重启应用
- 编辑服务文件(如
2. 配置本地到EC2的SSH端口转发(通过跳板机)
- 在本地终端执行以下SSH命令,建立跳板机到EC2的端口转发,将本地5005端口映射到EC2实例的5005端口:
ssh -L 5005:EC2_PRIVATE_IP:5005 JUMP_SERVER_USER@JUMP_SERVER_PUBLIC_IP - 参数说明:
EC2_PRIVATE_IP:EC2实例的私有IP(跳板机与EC2同属一个VPC时,用私有IP更安全,无需开放EC2公网调试端口)JUMP_SERVER_USER:跳板机的登录用户名JUMP_SERVER_PUBLIC_IP:跳板机的公网IP
- 执行命令后保持终端窗口开启,关闭窗口会中断端口转发
3. 在IntelliJ中配置远程调试
- 打开IntelliJ,点击顶部菜单栏的
Run→Edit Configurations - 点击左上角的
+号,选择Remote JVM Debug - 在配置页面填写以下信息:
Name:自定义配置名称(例如EC2 Remote Debug)Host:填写localhost(本地端口已转发到EC2)Port:填写5005(与之前设置的端口一致)
- 点击
Apply保存配置,然后点击Debug按钮启动调试
注意事项
- 确保EC2的安全组允许跳板机的IP访问调试端口(5005)
- 确保跳板机的安全组允许本地IP访问SSH端口(22)
- 若调试连接失败,依次排查:EC2应用是否用正确参数启动、端口转发命令是否正常运行、安全组规则是否配置正确
内容的提问来源于stack exchange,提问作者rainman
相关产品推荐
相关产品推荐

