这款国产SSH客户端很牛逼

JAVA葵花宝典

共 1291字,需浏览 3分钟

 ·

2021-01-17 03:00


前言

最近由于项目需求,项目中需要实现一个WebSSH连接终端的功能,由于自己第一次做这类型功能,所以首先上了GitHub找了找有没有现成的轮子可以拿来直接用,当时看到了很多这方面的项目,例如:GateOne、webssh、shellinabox等,这些项目都可以很好地实现webssh的功能,但是最终并没有采用,原因是在于这些底层大都是python写的,需要依赖很多文件,自己用的时候可以使用这种方案,快捷省事,但是做到项目中供用户使用时,总不能要求用户做到服务器中必须包含这些底层依赖,这显然不太合理,所以我决定自己动手写一个WebSSH的功能,并且作为一个独立的项目开源出来。

技术选型

由于webssh需要实时数据交互,所以会选用长连接的WebSocket,为了开发的方便,框架选用SpringBoot,另外还自己了解了Java用户连接ssh的jsch和实现前端shell页面的xterm.js.

所以,最终的技术选型就是 SpringBoot+Websocket+jsch+xterm.js。

WebSSH的业务逻辑实现(核心)

刚才我们实现了websocket的配置,都是一些死代码,实现了接口再根据自身需求即可实现,现在我们将进行后端主要业务逻辑的实现,在实现这个逻辑之前,我们先来想想,WebSSH,我们主要想要呈现一个什么效果。

我这里做了一个总结:

  • 1.首先我们得先连接上终端(初始化连接)
  • 2.其次我们的服务端需要处理来自前端的消息(接收并处理前端消息)
  • 3.我们需要将终端返回的消息回写到前端(数据回写前端)
  • 4.关闭连接

效果展示

  • 连接
  • 连接成功

命令操作

ls命令vim编辑器top命令

结语

这样我们就完成了一个webssh项目的实现,没有依赖其它任何的组件,后端完全使用Java实现,由于用了SpringBoot,非常容易部署。

但是,我们还可以对这个项目进行扩展,比如新增上传或下载文件,就像Xftp一样,可以很方便地拖拽式上传下载文件。

这个项目之后我会持续更新,上述功能也会慢慢实现,Github:https://github.com/NoCortY/WebSSH

来源:https://blog.csdn.net/NoCortY/article/details/104772431


推荐阅读

分享基于 Spring Cloud +OAuth2 的权限管理系统

链家程序员删公司9TB 数据 被判7年

工作10年后,再看String s = new String("xyz") 创建了几个对象?

SpringBoot集成WebSocket,实现后台向前端推送信息

SpringBoot 配置 ELK 环境

给代码写注释时有哪些讲究?

程序员该如何把 Windows 系统打造的跟 Mac 一样牛逼?

基于 SpringBoot,来实现MySQL读写分离技术

浏览 7
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报