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隧道,进行安全调试了。

相关文章
|
2月前
|
存储 人工智能 监控
什么是可信数据空间?为什么可信数据空间是数据共享的关键?
可信数据空间是解决数据共享中安全与合规难题的关键。它通过数据主权保障、技术互信和协同计算,实现跨组织安全数据协作,广泛应用于金融、医疗、企业内部门户等领域,是打破数据孤岛、构建数字信任的基石。
|
存储 JavaScript 前端开发
除了 Vuex,还有以下一些常见的状态管理库
【10月更文挑战第18天】随着技术的不断发展和演进,新的状态管理库也可能不断涌现,我们需要保持关注和学习,以适应不断变化的开发需求。
430 1
|
Linux
centos 8 换阿里源
centos 8 换阿里源
5054 0
|
2月前
|
Kubernetes 应用服务中间件 API
应对 Nginx Ingress 退役,是时候理清这些易混淆的概念了
本文希望提供一种更简单的方式,来理解这些容易混淆的技术概念:Nginx、Ingress、Ingress Controller、Ingress API、Nginx Ingress、Higress、Gateway API。
1137 91
|
BI
解决File.delete()删除不掉文件
首先注意两点: 此文件被使用的时候无法删除(比如网络输出没关闭流) 判断此文件是否存在再做删除(exists) 删除文件夹之前先删除文件夹下的所有文件(递归解决) 判断是否删除成功会有返回值,文件名错了的话,删除文件不会报错。
2532 0
|
2月前
|
NoSQL 安全 网络安全
redis在云端内网,管理redis数据的方案
云端Redis默认禁外网访问,直接开放易致数据泄露(尤其弱密码场景)。推荐用yunedit-redis:通过SSH隧道安全映射内网Redis端口至本地(如16379),再连接localhost:16379,即可安全完成增删查改及导入导出。
|
Prometheus Kubernetes 安全
5 款漏洞扫描工具:实用、强力、全面(含开源)(一)
5 款漏洞扫描工具:实用、强力、全面(含开源)
4586 1
5 款漏洞扫描工具:实用、强力、全面(含开源)(一)
|
消息中间件 JSON Java
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
33442 0
|
Java
Java通过HttpClient从外部url下载文件到本地
该Java程序旨在通过URL将外部网络文件(如图片)下载至本地,并解决防盗链问题。首先,它通过`HttpGet`请求获取远程文件,并通过设置`Referer`头防止防盗链。然后,根据响应内容类型确定文件后缀并保存至指定路径。测试表明,程序能够成功下载文件。
1661 8
Java通过HttpClient从外部url下载文件到本地
|
数据采集 搜索推荐 开发者
Nuxt3 实战 (十二):SEO 搜索引擎优化指南
这篇文章介绍了如何为Nuxt.js项目添加favicon图标和TDK(标题、描述、关键词),安装@nuxtjs/seo模块,以及如何设置Robots、Sitemap、OG Image、Schema.org、Experiments等。文章还提到了添加Google Analytics、Microsoft Clarity和Umami统计代码的方法。文章最后总结称,Nuxt.js 3集成了很多SEOModules,使开发者能够更加高效便捷地做好搜索引擎方面的优化。
972 0
Nuxt3 实战 (十二):SEO 搜索引擎优化指南

热门文章

最新文章