說明
基於 python3.7 + django 2.2.3 實現的 django-webshell,支持顏色顯示,支持 tab 命令補全,項目地址:https://github.com/leffss/django-webssh 。參考項目。在參考項目的基礎上做了一些優化:新增前端頁面刷新確認頁面(刷新會導致 websocket 連接斷開)、后端 paramiko 線程創建代碼優化、記錄命令記錄以及結果。有興趣的同學可以在此基礎上稍作修改集成到自己的堡壘機中。
所需技術:
- websocket 目前市面上大多數的 webssh 都是基於 websocket 協議完成的
- django-channels django 的第三方插件, 為 django 提供 websocket 支持
- xterm.js 前端模擬 shell 終端的一個庫
- paramiko python 下對 ssh2 封裝的一個庫
如何將所需技術整合起來?
- xterm.js 在瀏覽器端模擬 shell 終端, 監聽用戶輸入通過 websocket 將用戶輸入的內容上傳到 django
- django 接受到用戶上傳的內容, 將用戶在前端頁面輸入的內容通過 paramiko 建立的 ssh 通道上傳到遠程服務器執行
- paramiko 將遠程服務器的處理結果返回給 django
- django 將 paramiko 返回的結果通過 websocket 返回給用戶
- xterm.js 接收 django 返回的數據並將其寫入前端頁面
流程圖
啟動
pip3 install -r requirements.txt
cd django-webssh/webssh/
python3 manage.py runserver 0.0.0.0:8000
預覽