Spring Boot 实现在线Web SSH( Java Web版本的Xsehll)
文章目录
- 前言
- 扩展:什么是堡垒机
- 实现
- 依赖
- 相关截图
- 登录
- 命令执行
- 文件列表、删除、下载
- 文件上传
前言
之前讲过,我现在在一家国企上班,由于集团网络环境是封闭的内网,平时的部署上线,日志排查是通过一个跳板堡垒机去连接内网机器,大致情况如下图:
以及联想到Alibaba开源的Java诊断工具Arthas
,其Web Console在浏览器上就可以执行命令,操作简单,界面也非常的nice。
然后就想着去实现一个自己的Web SSH,去探究其内部的原理。
扩展:什么是堡垒机
堡垒机,即在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的入侵和破坏,而运用各种技术手段监控和记录运维人员对网络内的服务器、网络设备、安全设备、数据库等设备的操作行为,以便集中报警、及时处理及审计定责。
来自百度百科
实现
webssh泛指一种技术可以在网页上实现一个SSH终端。从而无需Xshell之类的模拟终端工具进行SSH连接,将SSH这一比较低层的操作也从C/S架构扭成了B/S架构。
工作原理
+---------+ http +--------+ ssh +-----------+
| browser | <==========> | webssh | <=======> | ssh server|
+---------+ websocket +--------+ ssh +-----------+
WebSocket
长连接,用于指令发送和响应的实时交互xterm.js
是一个基于WebSocket的容器,它可以帮助我们在前端实现命令行的样式。JSch
是SSH2的一个纯Java实现。它允许你连接到一个sshd 服务器,使用端口转发,X11转发,文件传输等等。
实现功能
- 命令执行
- 文件上传/下载
相关代码
依赖
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.7.RELEASE</version><relativePath /> <!-- lookup parent from repository -->
</parent>
<dependencies><!-- Web相关 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- jsch支持 --><dependency><groupId>com.jcraft</groupId><artifactId>jsch</artifactId><version>0.1.54</version></dependency><!-- WebSocket 支持 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency>
</dependencies>
相关截图
登录
命令执行
文件列表、删除、下载
文件上传
由于相关实现较为简单,只要看下JSch
和xterm.js
即可实现,还能自由扩展相关功能。
如果是比较懒的伸手党
想要全部代码或者交流的话可联系作者微信【lakernote】
最近问的比较多,为了方便,直接去关注公众,回复【webssh】下载
参考:
- https://blog.csdn.net/NoCortY/article/details/104772431
比参考的文章多了文件的上传和下载,也是通过JSch实现的
---
加群一起抱团取暖,共同进步
Spring Boot 实现在线Web SSH( Java Web版本的Xsehll)相关推荐
- 视频教程-Vue、Spring Boot开发小而完整的Web前后端分离项目实战-Java
Vue.Spring Boot开发小而完整的Web前后端分离项目实战 3年多.net开发经验:5年的java后端开发经验,熟悉行.net,java流行技术,拥有多个.net,java web企业级应; ...
- Spring Boot:(四)开发Web应用之JSP篇
Spring Boot:(四)开发Web应用之JSP篇 前言 上一篇介绍了Spring Boot中使用Thymeleaf模板引擎,今天来介绍一下如何使用SpringBoot官方不推荐的jsp,虽然难度 ...
- Spring Boot:(三)开发Web应用之Thymeleaf篇
Spring Boot:(三)开发Web应用之Thymeleaf篇 前言 Web开发是我们平时开发中至关重要的,这里就来介绍一下Spring Boot对Web开发的支持. 正文 Spring Boot ...
- 视频教程-Spring Boot实战入门视频课程-Java
Spring Boot实战入门视频课程 国内上市大型医疗软件公司产品研发部总经理,技术培训总监.6年以上大型项目一线开发.架构.管理经验,曾主导医疗大数据+移动BI产品设计与研发.技术狂热爱好者,擅长 ...
- Spring Boot整合Nacos时遇到 java.lang.IllegalStateException: Context has been already given a name 的解决办法
问题概述 在进行项目开发过程中,通过Spring Boot整合Alibaba Nacos的服务注册与发现和配置中心时,遇到个梗,启动时打印出一串错误日志信息 " Failed to rena ...
- dubbo 报错Serialized class com.spring.boot.entity.User must implement java.io.Serializable
这个报错是说dubbo在传输数据的时候反序列化报错, 使用dubbo进行数据传递时,需让作为消息传递的类序列化. 2019-03-26 16:45:01.228 ERROR 14968 --- [ni ...
- Spring Boot中使用AOP统一处理Web请求日志
AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是Spring框架中的一个重要内容,它通 ...
- spring boot:创建一个简单的web(maven web project)
1.新建一个maven web project; 2.在pom.xml文件中添加相应的依赖包: 3.新建一个HelloController请求控制类: 4.编写index.jsp页面: 5.编写启动类 ...
- 浅谈:Spring Boot原理分析,切换内置web服务器,SpringBoot监听项目(使用springboot-admin),将springboot的项目打成war包
浅谈:Spring Boot原理分析(更多细节解释在代码注释中) 通过@EnableAutoConfiguration注解加载Springboot内置的自动初始化类(加载什么类是配置在spring.f ...
- spring boot web_SpringBoot2.x入门:引入web模块
前提 这篇文章是<SpringBoot2.x入门>专辑的「第3篇」文章,使用的SpringBoot版本为2.3.1.RELEASE,JDK版本为1.8. 主要介绍SpringBoot的we ...
最新文章
- Strategy_Requirement2
- 批量更新日期字段中的年
- asp多重查询的解决方案
- 在docker镜像中加入环境变量
- trinitycore MySQL模块_Windows下编译TrinityCore服务端
- labelme 语义分割数据集_labelme安装以及使用教程——自制语义分割数据集(保姆级示范)...
- 带你熟悉鸿蒙轻内核Kconfig使用指南
- sklearn模型使用贝叶斯优化调参(以随机森林为例)
- 任正非:美国迟早会爱上华为
- datagrip连接oracle
- Linux - iptables
- SQL Fundamentals || DCL(Data Control Language) || 用户管理Profile概要文件
- configure: error: cups-config not found
- JavaSocket编程简单入门
- 高等数理统计(part4)--充分统计量
- Map集合的遍历方式(3种)
- 计算机ae软件的入门教学视频教程,新手如何入门剪辑?3分钟教会你快速上手(附赠教程)...
- 那些惊艳到你了的古诗词?
- 2021全国特种设备-R1快开门式压力容器充装模拟考试题库一[安考星]
- 金士顿固态硬盘修复,慧荣SM2246EN开卡记录,附量产工具
热门文章
- python菜鸟教程 pdf下载-Python实战-从菜鸟到大牛的进阶之路 pdf完整版
- 采用qt技术,开发OFD电子文档阅读器
- w7系统里没有iis信息服务器,win7系统控制面板的管理选项没有“internet信息服务(IIS)管理器”的解决方法...
- 怎么解决文件正在使用无法删除----资源监视器
- 68个Python内置函数详解,进阶必备!
- 220421-一些电平转换电路
- dateutil 日期计算_时间工具——DateUtil
- MATLAB 排序函数(先按第一列排序(主排序)然后再按第二列排序(次排序))
- vyos -vyatta-config-commit save
- 图神经网络 图像处理,神经网络图像修复