這款國產SSH客戶端很牛逼

前言

最近由於項目需求,項目中需要實現一個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讀寫分離技術


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章