「 努力應該成爲一種習慣,而不是一時的興起。這樣未來你纔可能頗有底氣地說:我獲得的歷來都不是由於僥倖。
前言前端
擴展:什麼是堡壘機web
實現spring
依賴shell
相關截圖數據庫
登陸瀏覽器
命令執行安全
文件列表、刪除、下載服務器
文件上傳微信
前言
以前講過,我如今在一家國企上班,因爲集團網絡環境是封閉的內網,平時的部署上線,日誌排查是經過一個跳板堡壘機去鏈接內網機器,大體狀況以下圖:websocket
以及聯想到Alibaba開源的Java診斷工具Arthas
,其Web Console在瀏覽器上就能夠執行命令,操做簡單,界面也很是的nice。
而後就想着去實現一個本身的Web SSH,去探究其內部的原理。
擴展:什麼是堡壘機
堡壘機,即在一個特定的網絡環境下,爲了保障網絡和數據不受來自外部和內部用戶的入侵和破壞,而運用各類技術手段監控和記錄運維人員對網絡內的服務器、網絡設備、安全設備、數據庫等設備的操做行爲,以便集中報警、及時處理及審計定責。
「來自百度百科
實現
webssh泛指一種技術能夠在網頁上實現一個SSH終端。從而無需Xshell之類的模擬終端工具進行SSH鏈接,將SSH這一比較低層的操做也從C/S架構扭成了B/S架構。
工做原理
+---------+ http +--------+ ssh +-----------+
| browser | <==========> | webssh | <=======> | ssh server|
+---------+ websocket +--------+ ssh +-----------+
-
WebSocket
長鏈接,用於指令發送和響應的實時交互 -
xterm.js
是一個基於WebSocket的容器,它能夠幫助咱們在前端實現命令行的樣式。 -
JSch
是SSH2的一個純Java實現。它容許你鏈接到一個sshd 服務器,使用端口轉發,X11轉發,文件傳輸等等。
實現功能
-
命令執行 -
文件上傳/下載
相關代碼
依賴
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.7.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<dependencies>
<!-- Web相關 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- jsch支持 -->
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.54</version>
</dependency>
<!-- WebSocket 支持 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
</dependencies>
相關截圖
登陸
命令執行
文件列表、刪除、下載
文件上傳
因爲相關實現較爲簡單,只要看下JSch
和xterm.js
便可實現,還能自由擴展相關功能。
若是是比較懶的伸手黨想要所有代碼或者交流的話可聯繫做者微信【lakernote】
參考:
-
https://blog.csdn.net/NoCortY/article/details/104772431
今天的分享就到這裏了,閱讀有收穫的同時也歡迎您關注個人公衆號Java學習指南,在這裏會分享熱門、實用的Java技術乾貨,你們一塊兒學習,加油🤠
本文分享自微信公衆號 - Java學習指南(gh_85b94beaede2)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。