在<em>浏览器</em>上打开 URL,就可以看到正在运行的命令和终端上运行一样:基本选项 -a,-address,监听的 IP 地址(默认:"0.0.0.0",即全网开放),对应配置变量为[$GOTTY_ADDRESS]。-p,--port,监听的端口号(默认:8080),对应配置...
2021-05-31 17:30:21
我們熱愛終端,終端簡易而便捷,但是終端需要先連線到主機上,連線到主機需要SSH,需要認證,需要配證書,設定還要登陸堡壘機才行。對於一般使用者有一定的壁壘,那麼有沒有快捷的方法呢?本文蟲蟲就給大家介紹通過Web共享終端的兩種解決方案——GoTTY和ttyd,GoTTY是Golang編寫,ttyd是C語言編寫兩者各有千秋,同學們可以根據喜好選擇。
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] <command> [<arguments...>]
如果不帶參數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容器,如下所示:
gotty -w docker run -it --rm busybox
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許可權);
同樣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則支援更加全面的終端功能,更加快速流暢。大家可以根據愛好選擇一種使用,也可以兩種都先嚐試一下,然後再選擇。
相關文章
在<em>浏览器</em>上打开 URL,就可以看到正在运行的命令和终端上运行一样:基本选项 -a,-address,监听的 IP 地址(默认:"0.0.0.0",即全网开放),对应配置变量为[$GOTTY_ADDRESS]。-p,--port,监听的端口号(默认:8080),对应配置...
2021-05-31 17:30:21
这两款手机在价格方面极具吸引力,它们的12G+256G版在电商平台均已降到了2799元,如果让你选择,你会考虑一加8T(左)还是一加9R(右)?要知道除了<em>CPU</em>外,一加9R和一加8T这两款手机的硬件配置几乎一模一样。一加9R和一加8T
2021-05-31 17:02:27
提起这一点,牙膏厂估计会落泪了,在以往较长一段时间里Intel <em>CPU</em>都采用14nm工艺,但又要进一步提升性能来与AMD竞争,导致功耗水涨船高,出现了功耗墙,意思是<em>CPU</em>本来可以跑更高性能,但碍于功耗限制被限定了频
2021-05-31 17:02:09
此外,英特尔还专注于创新生态的建立,英特尔将自己定位为技术型平台,正在从<em>CPU</em>向XPU转型。在产品战略设置之初,就在思考如何与生态合作伙伴共同合作。 亚马逊云科技大中华区首席云计算企业战略顾问张侠在讲话
2021-05-31 17:02:01
如今,5G时代已经全面开启,包括运营商、芯片厂商、手机厂商等在内的相关企业将在未来十年迎来了巨大的机遇。正如<em>高通</em>中国区董事长孟樸所说:“2021年是一个新十年的起点,由新一代连接技术推动的创新浪潮正扑面而
2021-05-31 17:01:56
相信对于不少人来说,手机是感知和体验5G最直接的媒介。按照<em>高通</em>的说法,预计今年全球5G智能手机出货量将达到4.5-5.5亿部,而这一数字预计明年将超过7.5亿。参考工信部的数据,截至4月底,我国5G终端数量已经超过3.1
2021-05-31 17:01:51