基于 Web 的 Linux 終端 WebTerminal
有時候用公共電腦,或者在沒有安裝 putty、xshell 之類的終端的電腦上訪問或展示服務器上的一些資料數(shù)據(jù),甚至是在運維平臺開發(fā)中想要嵌入 WebTerminal 功能,于是找到了這個項目——基于 Web 的 Linux 終端 webSSH。
webSSH 是 Python 語言寫的一個基于 tornado 和 paramiko 包的 web 應用,它可以作為一個 ssh 終端連接你的服務器。webSSH 主要特點:
- 支持 SSH 密碼認證,包括空密碼;
- 支持 SSH 公鑰認證,包括 DSA RSA ECDSA Ed25519 keys;
- 支持 Encrypted keys;
- 支持全屏終端,且終端窗口可調(diào)整大小;
- 自動檢測系統(tǒng)默認編碼;
- 適用于 Python 2.7-3.6。
1. 安裝
pip install webssh
2. 啟動
webssh 安裝完成,我們可以通過 wssh 命令進行啟動:
$ wssh
[I 180627 11:14:55 settings:67] WarningPolicy
[I 180627 11:14:55 main:33] Listening on 127.0.0.1:8888
wssh 默認啟用 localhost 的 8888 端口開啟服務,我們也可以通過監(jiān)聽 0.0.0.0 來使用本地的 iP 并指定服務端口:
$ wssh --address='0.0.0.0' --port=8000
[I 180627 11:07:05 settings:67] WarningPolicy
[I 180627 11:07:05 main:33] Listening on 0.0.0.0:8000
這時候,在瀏覽器打開 http://ip:8000,輸入登陸信息,登陸 web 終端: 

3. 參數(shù)
wssh 的一些主要參數(shù)如下:
#配置監(jiān)聽地址與服務端口
wssh --address='0.0.0.0' --port=8000
#配置缺少主機密鑰策略
wssh --policy=reject
#配置日志級別
wssh --logging=debug
#配置保存日志到指定文件
wssh --log-file-prefix=main.log
#更多參數(shù)說明
wssh --help
4. Nginx
wssh 可以使用 Nginx 作為后臺代理,以及啟用 SSL 訪問,參考配置文件:
location / {
proxy_pass http://127.0.0.1:8888;
proxy_http_version 1.1;
proxy_read_timeout 300;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-PORT $remote_port;
}
- 使用 Nginx 作為后臺代理,并啟用 SSL 訪問,可以避免你的 ssh 證書被暴露。此外,你的瀏覽器和 Web 服務器之間的通信將使用安全的 Websockets 進行加密。
- 嘗試使用 reject policy 作為缺少主機密鑰時的策略,以及經(jīng)過驗證的 known_hosts,可以防止中間人的攻擊。其思路是,webssh 會依次檢查系統(tǒng)主機密鑰文件("~/.ssh/known_hosts")和應用程序主機密鑰文件("./known_hosts"),如果 ssh 服務器的主機名(hostname)沒有被發(fā)現(xiàn)或者密鑰不匹配,連接將被中止。

浙公網(wǎng)安備 33010602011771號