前言最近由于项目需求,需要在项目中实现一个WebSSH连接终端功能。由于我是第一次做这类功能,所以先去github上看看有没有现成的轮子可以用。直接用,看了很多这方面的项目,比如:GateOne,webssh,shellinabox等,这些项目都可以很好的实现webssh的功能,但是最后都没有采用,因为这些底层大多图层是用python编写的,需要依赖很多文件。当你自己使用这个解决方案时,你可以使用这个解决方案,这既快速又简单,但是当你在项目中将它提供给用户时,你不能总是要求用户在服务器中包含这些底层依赖项。这显然是不合理的,所以我决定自己写一个WebSSH功能,作为一个独立的项目开源。技术选择由于webssh需要实时数据交互,所以使用了长连接的WebSocket。为了开发方便,框架使用了SpringBoot。另外,我还学习了jsch供Java用户连接ssh和实现前端shell页面的xterm.js。因此,最终的技术选择是SpringBoot+Websocket+jsch+xterm.js。WebSSH的业务逻辑实现(核心)刚才我们实现了websocket的配置,都是死代码。实现了接口之后,我们就可以根据自己的需要来实现了。现在我们来实现后端的主要业务逻辑。在实现这个逻辑之前,我们先想一想,WebSSH,我们主要想呈现什么效果。我这里做了一个总结:1.首先我们要连接到终端(初始化连接)2.其次我们的服务器需要处理来自前端的消息(接收并处理前端消息)3.我们需要return终端返回的信息写到前端(数据回写到前端)4.关闭连接效果显示连接成功命令操作ls命令vimeditortop命令结论这样我们就完成了不依赖任何其他组件实现一个webssh项目,后端完全使用Java实现,由于使用了SpringBoot,非常容易部署。不过我们也可以对这个项目进行扩展,比如添加上传或者下载文件,就像Xftp一样,可以通过拖拽的方式方便的上传下载文件。这个项目之后,我会继续更新,上面的功能会慢慢实现。本文内容来源:Github:https://github.com/NoCortY/We...本github作者所写文章地址:https://blog。csdn.net/NoCortY……
