這款國產(chǎn)SSH客戶端很牛逼
前言
最近由于項(xiàng)目需求,項(xiàng)目中需要實(shí)現(xiàn)一個(gè)WebSSH連接終端的功能,由于自己第一次做這類型功能,所以首先上了GitHub找了找有沒有現(xiàn)成的輪子可以拿來直接用,當(dāng)時(shí)看到了很多這方面的項(xiàng)目,例如:GateOne、webssh、shellinabox等,這些項(xiàng)目都可以很好地實(shí)現(xiàn)webssh的功能,但是最終并沒有采用,原因是在于這些底層大都是python寫的,需要依賴很多文件,自己用的時(shí)候可以使用這種方案,快捷省事,但是做到項(xiàng)目中供用戶使用時(shí),總不能要求用戶做到服務(wù)器中必須包含這些底層依賴,這顯然不太合理,所以我決定自己動(dòng)手寫一個(gè)WebSSH的功能,并且作為一個(gè)獨(dú)立的項(xiàng)目開源出來。
技術(shù)選型
由于webssh需要實(shí)時(shí)數(shù)據(jù)交互,所以會選用長連接的WebSocket,為了開發(fā)的方便,框架選用SpringBoot,另外還自己了解了Java用戶連接ssh的jsch和實(shí)現(xiàn)前端shell頁面的xterm.js.
所以,最終的技術(shù)選型就是 SpringBoot+Websocket+jsch+xterm.js。
WebSSH的業(yè)務(wù)邏輯實(shí)現(xiàn)(核心)
剛才我們實(shí)現(xiàn)了websocket的配置,都是一些死代碼,實(shí)現(xiàn)了接口再根據(jù)自身需求即可實(shí)現(xiàn),現(xiàn)在我們將進(jìn)行后端主要業(yè)務(wù)邏輯的實(shí)現(xiàn),在實(shí)現(xiàn)這個(gè)邏輯之前,我們先來想想,WebSSH,我們主要想要呈現(xiàn)一個(gè)什么效果。
我這里做了一個(gè)總結(jié):
1.首先我們得先連接上終端(初始化連接) 2.其次我們的服務(wù)端需要處理來自前端的消息(接收并處理前端消息) 3.我們需要將終端返回的消息回寫到前端(數(shù)據(jù)回寫前端) 4.關(guān)閉連接
效果展示
連接 
連接成功 
命令操作
ls命令
vim編輯器
top命令
結(jié)語
這樣我們就完成了一個(gè)webssh項(xiàng)目的實(shí)現(xiàn),沒有依賴其它任何的組件,后端完全使用Java實(shí)現(xiàn),由于用了SpringBoot,非常容易部署。
但是,我們還可以對這個(gè)項(xiàng)目進(jìn)行擴(kuò)展,比如新增上傳或下載文件,就像Xftp一樣,可以很方便地拖拽式上傳下載文件。
這個(gè)項(xiàng)目之后我會持續(xù)更新,上述功能也會慢慢實(shí)現(xiàn),Github:https://github.com/NoCortY/WebSSH
來源:https://blog.csdn.net/NoCortY/article/details/104772431
推薦閱讀
分享基于 Spring Cloud +OAuth2 的權(quán)限管理系統(tǒng)
工作10年后,再看String s = new String("xyz") 創(chuàng)建了幾個(gè)對象?
SpringBoot集成WebSocket,實(shí)現(xiàn)后臺向前端推送信息
