前言
我是本际云服务器推荐网的小编小本本。最近由于项目需要,要在web端实现类似secureCRT的功能。首先想到在Github上看下有没有现成的轮子,找了一圈没看到合适的。于是结合着开源的资料,实现了一套适合本地项目的基于Springboot和Vue前后端分离版本的网页端SSH。

技术选型
项目中前端使用vue,由于vue无法直接发起SSH通信,所以还需要一个后端来接受并发起SSH请求,后端选择了开发效率很高的Springboot框架。
我们来分析一下需求。首先需要有个交互界面,模拟terminal终端;其次还需要前后端通讯,需要支持前端发命令到后端以及后端将请求结果发送回前端;最后在后端还需要能处理SSH命令的逻辑。基于以上三点需求,最终的技术选型就是Xterm.js+Websocket+Jsch组合。
前端实现
前端主要功能如下:页面的实现、连接WebSocket并完成数据的接收以及回写、数据的发送。
部分源码如下:
1、引入以下依赖
Xterm.js npm install --save xterm xterm-addon-fit
xterm.js的插件,使终端的尺寸适合包含元素。
npm install --save xterm-addon-fit
2、创建一个command界面组件terminal.vue
主要包括xterm的初始化和websocket发送接收消息的实现
3、使用时引用terminal.vue组件,传入主机信息即可
此时访问页面已经能看到终端屏幕,接下来继续实现后端逻辑。
后端实现
后端功能主要包括服务器交互和请求转发两块,我们通过Jsch和Websocket来实现。服务器交互主要包括以下方法:初始化SSH连接、处理客户端发送的命令、读取命令执行结果、关闭连接等。前后端交互主要为对WebSocket生命周期中事件的处理,主要是连接WebSocket并完成数据的接收并回写。
部分源码如下:
1、Websocket配置,开启Websocket并配置处理器和拦截器。
2、Websocket处理器,实现Websocket生命周期事件,在接收到执行命令请求后调用执行逻辑。
3、WebSSH的业务逻辑,主要包括以下接口方法,重点看下处理客户端数据的实现,将请求数据分为连接请求和命令请求分别处理。
效果展示
现在,我们已经成功实现了文章开始提出的Web端SSH需求。运行项目看下效果,可以看到已能实现类似SecureCRT的功能。
连接主机

ls命令

vim命令

top命令

End
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/5929.html
