網路工程師的Python之路——Webssh

版權宣告:我已加入“維權騎士”的版權保護計劃,知乎專欄“網路行者”下的所有文章均為我本人(知乎ID:弈心)原創,未經允許不得轉載。

如果你喜歡我的文章,請關注我的知乎專欄“網路行者”, 裡面有更多像本文一樣深度講解計算機網路技術的優質文章。

有3個月沒更新專欄了,這幾個月忙著《網路工程師的Django之路》的基礎篇和實驗篇的影片教學和英國Packt出版社的新書

Python Network Programming Techniques

的技術審稿工作,最近又在主攻Golang,實在抽不出空更新專欄。

上週發現一個比較簡單實用的Python開源專案:Webssh,試了下感覺不錯。今天順手抽空寫一篇手把手教程。

什麼是Webssh

Webssh顧名思義,是指透過瀏覽器以網頁的形式透過SSH協議遠端訪問任何開啟了SSH服務的裝置,其工作原理大致如下:

網路工程師的Python之路——Webssh

使用Webssh的好處是:在存在跳板機的環境下,如果跳板機本身有開啟web服務的話,那可以在跳板機上部署webssh,這時不用透過SSH或者RDP訪問跳板機,直接開啟瀏覽器就能以web形式透過跳板機來SSH遠端訪問網路裝置,這在一些內網防火牆不允許SSH,但是允許HTTP和HTTPS的環境中很實用。而且免去了安裝putty、secureCRT等SSH client軟體的必要。

安裝和部署Webssh

Webssh的安裝和部署很簡單,這裡以CentOS 7為例:

使用webssh有個前提條件:必須開啟web服務,因此第一步先要yum install httpd安裝Apache。

網路工程師的Python之路——Webssh

2。 Webssh預設使用tcp/8888埠號,因此要確保CentOS上的防火牆允許該埠號透過:

firewall-cmd ——permanent ——add-port=8888/tcpfirewall-cmd ——reload

網路工程師的Python之路——Webssh

然後firewall-cmd ——list-all確認8888/tcp是允許透過的:

firewall-cmd ——list-all

網路工程師的Python之路——Webssh

3。 Apache預設不是開啟的,需要systemctl start httpd手動開啟:

systemctl start httpd

然後systemctl status httpd確認Apache的狀態為Active:

網路工程師的Python之路——Webssh

4。 開啟瀏覽器,如能訪問CentOS的IP地址並返回下面的頁面,說明Apache即web服務啟動成功:

網路工程師的Python之路——Webssh

5。 回到CentOS,繼續pip3 install webssh安裝webssh模組。

網路工程師的Python之路——Webssh

6。 然後輸入命令wssh開啟Webssh,如果看到

[I 210824 14:25:44 main:39] Listening on :8888 (http)

,則說明Webssh開啟成功:

網路工程師的Python之路——Webssh

7。 然後透過瀏覽器訪問CentOS主機的IP+8888埠號(Webssh支援Chrome, 火狐,Edge,Safari,Opera等大多數主流瀏覽器),進入下面介面後,填寫要透過SSH訪問的交換機的Hostname,Username, Password等引數後即能登入裝置:

網路工程師的Python之路——Webssh

網路工程師的Python之路——Webssh

Webssh常用引數

改變SSH介面背景顏色,用“http://xx。xx。xx。xx:8888/#bgcolor=顏色詞”即可,比如要把背景色調為藍色則“http://xx。xx。xx。xx:8888/#bgcolor=blue”,改為紅色則“http://xx。xx。xx。xx:8888/#bgcolor=red”, 改為綠色則為“http://xx。xx。xx。xx:8888/#bgcolor=green”,依次類推:

網路工程師的Python之路——Webssh

網路工程師的Python之路——Webssh

網路工程師的Python之路——Webssh

2。 常見webssh伺服器選項(下列命令需要回到CentOS命令列輸入):

#改變webssh服務的IP地址和埠號wssh ——address=‘2。2。2。2’ ——port=8000#啟用https伺服器,預設狀態下從外網訪問webssh伺服器的http流量都會被重定向或者阻擋。wssh ——certfile=‘/path/to/cert。crt’ ——keyfile=‘/path/to/cert。key’# missing host key策略,安全起見,建議保持reject。wssh ——policy=reject#日誌等級(日誌在CentOS端可以看到),預設是Syslog最低的Debugwssh ——logging=debug#將日誌儲存進檔案wssh ——log-file-prefix=main。log

3。 除了前面講到的改變SSH會話背景顏色的方法外,Webssh常見的URL引數還有:

#跳過登入頁面,直接傳入hostname, username, password三個引數訪問裝置http://localhost:8888/?hostname=xx&username=yy&password=str_base64_encoded#改變瀏覽器的tab titlehttp://localhost:8888/?title=my-ssh-server

比如這裡我要把title改為test,則URL輸入“http://xx。xx。xx。xx:8888/?title=test”即可:

網路工程師的Python之路——Webssh

#改變編碼http://localhost:8888/#encoding=gbk#改變字型大小http://localhost:8888/#fontsize=24

後記:

Webssh安裝和部署,以及使用都非常簡單,半個小時就能搞定。除了可以炫技外,我個人認為學習了我的Django課程的讀者可以嘗試將Webssh融入到基於Django的前端專案中,會是一個不錯的嘗試。