Spring Boot 实现在线Web SSH( Java Web版本的Xsehll)

Spring Boot 实现在线Web SSH( Java Web版本的Xsehll)前言之前讲过 我现在在一家国企上班 由于集团网络环境是封闭的内网 平时的部署上线 日志排查是通过一个跳板堡垒机去连接内网机器 大致情况如下图 以及联想到 Alibaba 开源的 Java 诊断工具 Arthas 其 WebConsole 在浏览器上就可以执行命令 操作简单 界面也非常的 nice 然后就想着去实现一个自己的 WebSSH 去探究其内部的原理 扩展 什么是堡垒机堡垒机 即在一个特定的网络环境下 为了保障网络和数据不受来自外部和内部用户的入侵和破坏 而运用各种技术手段监控和记录运维人员对网络内的

前言

之前讲过,我现在在一家国企上班,由于集团网络环境是封闭的内网,平时的部署上线,日志排查是通过一个跳板堡垒机去连接内网机器,大致情况如下图:

在这里插入图片描述

以及联想到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 />  
        
        parent> <dependencies>  
        <dependency> <groupId>org.springframework.boot 
         groupId> <artifactId>spring-boot-starter-web 
          artifactId>  
           dependency>  
           <dependency> <groupId>com.jcraft 
            groupId> <artifactId>jsch 
             artifactId> <version>0.1.54 
              version>  
               dependency>  
               <dependency> <groupId>org.springframework.boot 
                groupId> <artifactId>spring-boot-starter-websocket 
                 artifactId>  
                  dependency>  
                   dependencies> 

相关截图

登录

在这里插入图片描述

命令执行

在这里插入图片描述

文件列表、删除、下载

在这里插入图片描述

文件上传

在这里插入图片描述

由于相关实现较为简单,只要看下JSchxterm.js即可实现,还能自由扩展相关功能。
​如果是比较懒的伸手党想要全部代码或者交流的话可联系作者微信【lakernote】

在这里插入图片描述
最近问的比较多,为了方便,直接去关注公众,回复【webssh】下载
img




参考:

  • https://blog.csdn.net/NoCortY/article/details/

比参考的文章多了文件的上传和下载,也是通过JSch实现的

--- 

加群一起抱团取暖,共同进步

img

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/229655.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午4:12
下一篇 2026年3月16日 下午4:12


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号