这款国产SSH客户端很牛逼

共 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读写分离技术

浏览 14
点赞
评论
收藏
分享

手机扫一扫分享

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

手机扫一扫分享

分享
举报