java远程调试在线服务的教程超详细

简介: 很多时候,由于本地环境跟服务端环境有差异,或者服务端的数据有差异,造成在服务端运行出错,但是本地不出错的情况,因此,就需要做远程调试。java是一个很有意思的语言,它有很多好用的工具,就比如,java是支持在线调试的,只要在服务端启动调试端口就行了。但是很多教程都没有考虑安全问题,很多教程都是直接连接服务端的调试端口,直接暴露调试端口会导致服务端被攻击,因此,最近很多公司因为调试而导致出现安全事故。因此,我们这个教程不单是告诉大家如何调试,还将教会大家如何做安全。安全是远程调试的必修课。

很多时候,由于本地环境跟服务端环境有差异,或者服务端的数据有差异,造成在服务端运行出错,但是本地不出错的情况,因此,就需要做远程调试。

java是一个很有意思的语言,它有很多好用的工具,就比如,java是支持在线调试的,只要在服务端启动调试端口就行了。

但是很多教程都没有考虑安全问题,很多教程都是直接连接服务端的调试端口,直接暴露调试端口会导致服务端被攻击,因此,最近很多公司因为调试而导致出现安全事故。因此,我们这个教程不单是告诉大家如何调试,还将教会大家如何做安全。安全是远程调试的必修课。

一、修改java启动命令,追加启动参数

追加的参数如下,一般是使用5005端口调试:

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

二、使用ssh隧道工具将应用端口映射到本地

注意,这里是使用ssh隧道工具将端口映射到本地,不是直接云端机房开通外网访问将端口挂到外网。这个很重要,因为ssh隧道还要经过ssh跳板机的密码这一关,有安全校验,假如直接开通外网端口访问是没有任何安全措施的。

这里推荐使用yunedit-ssh这款可视化ssh工具,来做ssh隧道,因为它针对ssh隧道功能比较专业,有断线重连等功能,还有隧道开关功能。

使用方法:
(1)下载yunedit-ssh安装,下载下来后,双击不断点击下一步就可以安装完成了。

(2)在界面创建一个连接云端ssh跳板机的ssh连接,并设置映射规则,添加完后,如下图所示:
image.png

如上图所示,映射规则将云端机房内网服务器的5005端口,映射到本地5005端口了,启动这个映射开关后,后面访问本地localhost的5005端口,即可通过ssh隧道访问云端的内网服务器了。

三、配置idea远程调试

这个很简单,在idea中,点击Run菜单,然后再点击Edit Configurations,在接下来的界面上,点击左边➕号,新建一个Remote Jvm Debug调试类型的调试项。界面如下:
image.png

四、使用idea打开相同分支的代码

idea必须打开跟服务端版本相同的分支的代码,否则服务端的代码可能会跟本地的代码不一致。

找到需要调试的代码,打上断点。

五、在idea启动调试

在idea的右上角,找到这个调试小按钮,点击就启动调试了
image.png

当服务端的逻辑运行到这个断点的代码的时候,就可以远程调试了。现在放心调试吧,已经使用了ssh隧道,进行安全调试了。

相关文章
|
3月前
|
存储 人工智能 监控
什么是可信数据空间?为什么可信数据空间是数据共享的关键?
可信数据空间是解决数据共享中安全与合规难题的关键。它通过数据主权保障、技术互信和协同计算,实现跨组织安全数据协作,广泛应用于金融、医疗、企业内部门户等领域,是打破数据孤岛、构建数字信任的基石。
|
JSON 前端开发 Java
SpringBoot中Date格式化处理
日期格式化处理:从混乱到清晰,轻松转换日期格式
1007 1
|
网络协议 安全 Unix
UNIX域套接字(Unix Domain Socket,UDS)之所以高效
UNIX域套接字(Unix Domain Socket,UDS)之所以高效
985 3
|
Linux
centos 8 换阿里源
centos 8 换阿里源
5429 0
|
Oracle 关系型数据库 数据库
postgresql|数据库|数据迁移神器ora2pg的安装部署和初步使用
postgresql|数据库|数据迁移神器ora2pg的安装部署和初步使用
1560 0
|
3月前
|
Kubernetes 应用服务中间件 API
应对 Nginx Ingress 退役,是时候理清这些易混淆的概念了
本文希望提供一种更简单的方式,来理解这些容易混淆的技术概念:Nginx、Ingress、Ingress Controller、Ingress API、Nginx Ingress、Higress、Gateway API。
1663 116
|
消息中间件 存储 监控
ActiveMQ系列: ActiveMQ 的死信队列与消费重试机制
maximumRedeliveryDelay:最大传送延迟,只在 useExponentialBackOff 为 true 时有效(V5.5),假设首次重连间隔为 10ms,倍数为 2,那么第二次重连时间间隔为 20ms,第三次重连时间间隔为 40ms,当重连时间间隔大的最大重连时间间隔时,以后每次重连时间间隔都为最大重连时间间隔。默认为 -1。
1625 0
ActiveMQ系列: ActiveMQ 的死信队列与消费重试机制
|
3月前
|
NoSQL 安全 网络安全
redis在云端内网,管理redis数据的方案
云端Redis默认禁外网访问,直接开放易致数据泄露(尤其弱密码场景)。推荐用yunedit-redis:通过SSH隧道安全映射内网Redis端口至本地(如16379),再连接localhost:16379,即可安全完成增删查改及导入导出。
|
消息中间件 JSON Java
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
34551 1
|
消息中间件 Kafka Apache
Flink 提供了与 Kafka 集成的官方 Connector,使得 Flink 能够消费 Kafka 数据
【2月更文挑战第6天】Flink 提供了与 Kafka 集成的官方 Connector,使得 Flink 能够消费 Kafka 数据
744 2

热门文章

最新文章

下一篇
开通oss服务