版權宣告:我已加入“維權騎士”的版權保護計劃,知乎專欄“網路行者”下的所有文章均為我本人(知乎ID:弈心)原創,未經允許不得轉載。
如果你喜歡我的文章,請關注我的知乎專欄“網路行者”, 裡面有更多像本文一樣深度講解計算機網路技術的優質文章。
有3個月沒更新專欄了,這幾個月忙著《網路工程師的Django之路》的基礎篇和實驗篇的影片教學和英國Packt出版社的新書
Python Network Programming Techniques
的技術審稿工作,最近又在主攻Golang,實在抽不出空更新專欄。
上週發現一個比較簡單實用的Python開源專案:Webssh,試了下感覺不錯。今天順手抽空寫一篇手把手教程。
什麼是Webssh
Webssh顧名思義,是指透過瀏覽器以網頁的形式透過SSH協議遠端訪問任何開啟了SSH服務的裝置,其工作原理大致如下:
使用Webssh的好處是:在存在跳板機的環境下,如果跳板機本身有開啟web服務的話,那可以在跳板機上部署webssh,這時不用透過SSH或者RDP訪問跳板機,直接開啟瀏覽器就能以web形式透過跳板機來SSH遠端訪問網路裝置,這在一些內網防火牆不允許SSH,但是允許HTTP和HTTPS的環境中很實用。而且免去了安裝putty、secureCRT等SSH client軟體的必要。
安裝和部署Webssh
Webssh的安裝和部署很簡單,這裡以CentOS 7為例:
使用webssh有個前提條件:必須開啟web服務,因此第一步先要yum install httpd安裝Apache。
2。 Webssh預設使用tcp/8888埠號,因此要確保CentOS上的防火牆允許該埠號透過:
firewall-cmd ——permanent ——add-port=8888/tcpfirewall-cmd ——reload
然後firewall-cmd ——list-all確認8888/tcp是允許透過的:
firewall-cmd ——list-all
3。 Apache預設不是開啟的,需要systemctl start httpd手動開啟:
systemctl start httpd
然後systemctl status httpd確認Apache的狀態為Active:
4。 開啟瀏覽器,如能訪問CentOS的IP地址並返回下面的頁面,說明Apache即web服務啟動成功:
5。 回到CentOS,繼續pip3 install webssh安裝webssh模組。
6。 然後輸入命令wssh開啟Webssh,如果看到
[I 210824 14:25:44 main:39] Listening on :8888 (http)
,則說明Webssh開啟成功:
7。 然後透過瀏覽器訪問CentOS主機的IP+8888埠號(Webssh支援Chrome, 火狐,Edge,Safari,Opera等大多數主流瀏覽器),進入下面介面後,填寫要透過SSH訪問的交換機的Hostname,Username, Password等引數後即能登入裝置:
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”,依次類推:
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”即可:
#改變編碼http://localhost:8888/#encoding=gbk#改變字型大小http://localhost:8888/#fontsize=24
後記:
Webssh安裝和部署,以及使用都非常簡單,半個小時就能搞定。除了可以炫技外,我個人認為學習了我的Django課程的讀者可以嘗試將Webssh融入到基於Django的前端專案中,會是一個不錯的嘗試。