Web即終端——利用Web共享終端應用
我們熱愛終端,終端簡易而便捷,但是終端需要先連線到主機上,連線到主機需要SSH,需要認證,需要配證書,設定還要登陸堡壘機才行。對於一般使用者有一定的壁壘,那麼有沒有快捷的方法呢?本文蟲蟲就給大家介紹透過Web共享終端的兩種解決方案——GoTTY和ttyd,GoTTY是Golang編寫,ttyd是C語言編寫兩者各有千秋,同學們可以根據喜好選擇。
GoTTY
GoTTY 是一個簡單的命令列工具,可將可以一鍵將命令列工具轉換為 Web應用程式。
安裝
GoTTY的安裝非常簡單,可以直接Github官方倉庫下載編譯好的二進位制檔案安裝,當前版本為V1。2。0。
檔案命名為darwin_amd64可以用於Mac OS X 使用者。
可以用brew管理器安裝:
brew install sorenisanerd/gotty/gotty
熟悉golang的使用者可以使用go get安裝:
go get github。com/sorenisanerd/gotty
該命令會將拉取一個最新的master分支構建二進位制包,其中可能包含不穩定或破壞性的更改。
用法
GoTTY的使用很簡單,基本用法為:
gotty [options]
如果不帶引數gotty使用預設引數(例如 gotty top)。 預設情況下,GoTTY 在監聽8080埠啟動Web服務。
在瀏覽器上開啟 URL,就可以看到正在執行的命令和終端上執行一樣:
基本選項
-a,-address,監聽的 IP 地址(預設:“0。0。0。0”,即全網開放),對應配置變數為[$GOTTY_ADDRESS]。
-p,——port,監聽的埠號(預設:8080),對應配置變數為[$GOTTY_PORT]。
-m,——path,基本路徑(預設“/”),對應配置變數為[$GOTTY_PATH]。
-w,——permit-write,允許客戶端TTY寫入(預設值:false,注意安全),對應配置變數為[ $GOTTY_PERMIT_WRITE ]。
-c,——credential,基本身份驗證的憑據(例如:使用者名稱:密碼,預設禁用),對應配置變數[$GOTTY_CREDENTIAL]。
-r,——random-url,向 URL 新增一個隨機字串(預設值:false,建議啟用), 對應配置變數[$GOTTY_RANDOM_URL]。
——random-url-length 值隨機 URL 長度(預設值:8), 對應配置變數[$GOTTY_RANDOM_URL],[$GOTTY_RANDOM_URL_LENGTH]
-t,——tls,啟用TLS/SSL(預設: false) , 對應配置變數[$GOTTY_TLS]
——tls-crt ,TLS/SSL 證書檔案路徑(預設:~/。gotty。crt), 對應配置變數[ $GOTTY_TLS_CRT ]
——tls-key TLS/SSL 金鑰檔案路徑(預設:~/。gotty。key), 對應配置變數[ $GOTTY_TLS_KEY ]
——tls-ca-crt v,TLS/SSL 用於客戶端認證CA根證書檔案(預設: ~/。gotty。ca。crt), 對應配置變數[ $GOTTY_TLS_CA_CRT ]
——index 值自定義 index。html 檔案, 對應配置變數[ $GOTTY_INDEX ]
——title-format,瀏覽器視窗的標題格式(預設:{{ 。command }}@{{ 。hostname }}), 對應配置變數[ $GOTTY_TITLE_FORMAT ]
——reconnect 啟用重新連線(預設值:false), 對應配置變數[ $GOTTY_RECONNECT ]
——reconnect-time value 重新連線的時間(預設值:10), 對應配置變數[ $GOTTY_RECONNECT_TIME ]
——max-connection value 到 gotty 的最大連線數(預設值:0), 對應配置變數[ $GOTTY_MAX_CONNECTION ]
——once 只接受一個客戶端並 退出 在斷開連線時 , 對應配置變數(預設值:false)[ $GOTTY_ONCE ]
——timeout值超時秒 為 等待客戶端(0到禁用), 對應配置變數(預設值:0)[ $ GOTTY_TIMEOUT ]
——permit-arguments 允許客戶端 傳送 命令 行引數 在 URL 中 (例如 example:8080/?arg=AAA & arg=BBB)(預設值:false), 對應配置變數[ $GOTTY_PERMIT_ARGUMENTS ]
——width value 螢幕的靜態寬度,0(default) 表示動態調整大小 (default: 0) , 對應配置變數[ $GOTTY_WIDTH ]
——height value 螢幕的靜態高度,0(default) 表示動態調整大小 (default: 0) , 對應配置變數[ $GOTTY_HEIGHT ]
——ws-origin value 與 WebSocket 接受的原始 URL 匹配的正則表示式。 預設情況下不接受跨源請求 , 對應配置變數[ $GOTTY_WS_ORIGIN ]
——term value 要在瀏覽器上使用的終端名稱,xterm 或 hterm 之一。 (預設: “ xterm ” ), 對應配置變數[ $GOTTY_TERM ]
——enable-webgl 啟用 WebGL 渲染器(預設值:false), 對應配置變數[ $GOTTY_ENABLE_WEBGL ]
——close-signal value ,gotty 關閉時傳送到程序的訊號(預設:SIGHUP)(預設:1), 對應配置變數[ $GOTTY_CLOSE_SIGNAL ]
——close-timeout,客戶端斷開連線後強制關閉程序的秒數(預設值:-1)(預設值:-1), 對應配置變數[$GOTTY_CLOSE_TIMEOUT ]
——config ,配置檔案路徑(預設: ~/。gotty), 對應配置變數[ $GOTTY_CONFIG ]
-h,——help,顯示幫助(預設:false)
-v,——version,列印版本(預設:false)。
配置檔案
上一部分基本命令選選項都對應一個配置變數,可以在設定自定義化的預設配置專案,配置檔案預設為~/。gotty,也可以透過—config指定。一個示例配置檔案如下:
//監聽埠為9000
port = “9000”
//啟用TSL/SSL
enable_tls = true
// 指定主題的字型和背景色
preferences {
font_size = 5
background_color = “rgb(16, 16, 32)”
}
多使用者共享
當新客戶端連線到伺服器時,GoTTY 會用執行的命令啟動一個新程序。預設情況下使用者不能與其他人共享單個終端。但是,可以使用多終端複用器與多個客戶端共享單個程序。GoTTy支援透過Screen和Tmux共享終端
Screen
安裝 GNU screen 後,透過creen -S name-for-sessions開始一個新的會話並透過另一個終端視窗/選項卡中gotty 連線到它
。/gotty screen -x name-for-session。
在第一個終端選項卡/視窗中執行的所有命令和活動將會由gotty共享到web。
tmux
在tmux下可以由gotty啟動新tmux 會話:
gotty tmux new -A -s gotty top
此命令不允許客戶端傳送擊鍵,但是,可以從本地終端附加會話並執行諸如切換模式的操作top命令。
但是你可以使用tmux再從終端連線到該tmux會話:
tmux new -A -s gotty
可以透過快捷鍵與夥伴們分享當前的會話,可以配置tmux配置檔案(。tmux。conf)。
# Start GoTTY in a new window with C-t
bind-key C-t new-window “gotty tmux attach -t `tmux display -p ‘#S’`”
Docker
為了安全地給使用者提供一個被監禁的環境時,可以使用Docker容器,如下所示:
gotty -w docker run -it ——rm busybox
ttyd
ttyd 是一個C語言開發的終端web共享方案,用於透過網路共享終端。ttyd基於在 的 Libwebsockets 和libuv 建立,效能很好,響應速度快。前端方案基於Xterm。js,具有全功能終端以及中日韓 和IME支援。具有lrzsz支援的影象ZMODEM。基於OpenSSL提供 TSL/SSL支援。
ttdy支援跨平臺:macOS、Linux、FreeBSD/OpenBSD、
OpenWrt
、Windows等。
安裝
macOS安裝,可以透過homebrew:
brew install ttyd
Linux:
可以直接下載對應的二進位制版本下載:
或者基於原始碼自己編譯:
sudo apt-get install build-essential cmake git libjson-c-dev libwebsockets-dev
git clone github/tsl0922/ttyd。git
cd ttyd && mkdir build && cd build
cmake 。。
make && sudo make install
可能還需要編譯/安裝 libwebsockets 從原始碼。
用法
命令列選項:
基本用法
ttyd -p 8080 bash
和Gotty預設只讀不同,ttyd預設是全功能的一個終端,可以執行任意操作,所以要注意自己設定安全。
甚至可以在web下,巢狀啟動一個ttyd(套娃)。
要在透過系統認證,在web登陸有再使用,可以用ttyd login啟動(注意login啟動需要root許可權);
Docker
同樣ttyd也支援docker方式啟動。多個客戶端共享單個 docker 容器,可以使用:
docker run -it ——rm -p 7681:7681 tsl0922/ttyd
為每個客戶端建立新的 docker 容器:
ttyd docker run -it ——rm Ubuntu
總結
本文給大家介紹利用Web共享終端的兩種方案,GoTTY和ttyd,兩種方案都各有特長,GoTTY精練,更加安全(預設只讀,隨機token字串等,單應用),而ttyd則支援更加全面的終端功能,更加快速流暢。大家可以根據愛好選擇一種使用,也可以兩種都先嚐試一下,然後再選擇。
相關文章
- 2021-06-2710種義大利麵對應10種中華麵條,你都能叫上名字嗎?
- 2021-06-11中年女人,想和你更“進一步”時,會有掩飾不住的特徵!
- 2021-06-05軟網推薦:自己動手解決Windows 10字型故障
- 2021-05-11品茶,茶道中喝茶的最高級別的享受
- 2021-04-17人車生活:分享輪轂j值對照表,汽車改裝的重要指標