GoTTY:把你的 Linux 終端放到瀏覽器裡面
| 2017-04-25 10:02 評論: 7 收藏: 2
GoTTY 是一個簡單的基於 Go 語言的命令列工具,它可以將你的終端(TTY)作為 web 程式共享。它會將命令列工具轉換為 web 程式。
它使用 Chrome OS 的終端模擬器(hterm)來在 Web 瀏覽器上執行基於 JavaScript 的終端。重要的是,GoTTY 執行了一個 Web 套接字伺服器,它基本上是將 TTY 的輸出傳輸給客戶端,並從客戶端接收輸入(即允許客戶端的輸入),並將其轉發給 TTY。
它的架構(hterm + web socket 的想法)靈感來自 Wetty 專案,它使終端能夠透過 HTTP 和 HTTPS 使用。
先決條件
你需要在 Linux 中安裝 GoLang (Go 程式語言) 環境來執行 GoTTY。
如何在 Linux 中安裝 GoTTY
如果你已經有一個可以工作的 Go 語言環境,執行下面的 go get
命令來安裝它:
# go get github.com/yudai/gotty
上面的命令會在你的 GOBIN
環境變數中安裝 GOTTY 的二進位制,嘗試檢查下是否如此:
# $GOPATH/bin/
檢查 GOBIN 環境
如何在 Linux 中使用 GoTTY
要執行它,你可以使用 GOBIN 環境變數並用命令補全:
# $GOBIN/gotty
另外,要不帶完整命令路徑執行 GoTTY 或其他 Go 程式,使用 export
命令將 GOBIN
變數新增到 ~/.profile
檔案中的 PATH
環境變數中。
export PATH="$PATH:$GOBIN"
儲存檔案並關閉。接著執行 source
來使更改生效:
# source ~/.profile
執行 GoTTY 命令的常規語法是:
Usage: gotty [options] <Linux command here> [<arguments...>]
現在用 GoTTY 執行任意命令,如 df 來從 Web 瀏覽器中檢視系統分割槽空間及使用率。
# gotty df -h
GoTTY 預設會在 8080 啟動一個 Web 伺服器。在瀏覽器中開啟 URL:http://127.0.0.1:8080/
,你會看到執行的命令彷彿執行在終端中一樣:
Gotty 檢視 Linux 磁碟使用率
如何在 Linux 中自定義 GoTTY
你可以在 ~/.gotty
配置檔案中修改預設選項以及終端,如果該檔案存在,它會在每次啟動時載入這個檔案。
這是由 getty 命令讀取的主要自定義檔案,因此,按如下方式建立:
# touch ~/.gotty
併為配置選項設定你自己的有效值(在此處查詢所有配置選項)以自定義 GoTTY,例如:
// Listen at port 9000 by default
port = "9000"
// Enable TSL/SSL by default
enable_tls = true
// hterm preferences
// Smaller font and a little bit bluer background color
preferences {
font_size = 5,
background_color = "rgb(16, 16, 32)"
}
你可以使用命令列中的 --html
選項設定你自己的 index.html
檔案:
# gotty --index /path/to/index.html uptime
如何在 GoTTY 中使用安全功能
由於 GoTTY 預設不提供可靠的安全保障,你需要手動使用下面說明的某些安全功能。
允許客戶端在終端中執行命令
請注意,預設情況下,GoTTY 不允許客戶端輸入到TTY中,它只支援視窗縮放。
但是,你可以使用 -w
或 --permit-write
選項來允許客戶端寫入 TTY,但是並不推薦這麼做因為會有安全威脅。
以下命令會使用 vi 命令列編輯器在 Web 瀏覽器中開啟檔案 fossmint.txt
進行編輯:
# gotty -w vi fossmint.txt
以下是從 Web 瀏覽器看到的 vi 介面(像平常一樣使用 vi 命令):
Gotty Web Vi 編輯器
使用基本(使用者名稱和密碼)驗證執行 GoTTY
嘗試啟用基本身份驗證機制,這樣客戶端將需要輸入指定的使用者名稱和密碼才能連線到 GoTTY 伺服器。
以下命令使用 -c
選項限制客戶端訪問,以向使用者詢問指定的憑據(使用者名稱:test
密碼:@67890
):
# gotty -w -p "9000" -c "test@67890" glances
使用基本驗證執行 GoTTY
Gotty 生成隨機 URL
限制訪問伺服器的另一種方法是使用 -r
選項。GoTTY 會生成一個隨機 URL,這樣只有知道該 URL 的使用者才可以訪問該伺服器。
還可以使用 -title-format "GoTTY – {{ .Command }} ({{ .Hostname }})"
選項來定義瀏覽器標題。glances 用於顯示系統監控統計資訊:
# gotty -r --title-format "GoTTY - {{ .Command }} ({{ .Hostname }})" glances
以下是從瀏覽器中看到的上面的命令的結果:
使用 Gotty 隨機 URL 用於 Glances 系統監控
帶有 SSL/TLS 使用 GoTTY
因為預設情況下伺服器和客戶端之間的所有連線都不加密,當你透過 GoTTY 傳送秘密資訊(如使用者憑據或任何其他資訊)時,你需要使用 -t
或 --tls
選項才能在會話中啟用 TLS/SSL:
預設情況下,GoTTY 會讀取證照檔案 ~/.gotty.crt
和金鑰檔案 ~/.gotty.key
,因此,首先使用下面的 openssl
命令建立一個自簽名的證照以及金鑰( 回答問題以生成證照和金鑰檔案):
# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ~/.gotty.key -out ~/.gotty.crt
按如下所示,透過啟用 SSL/TLS,以安全方式使用 GoTTY:
# gotty -tr --title-format "GoTTY - {{ .Command }} ({{ .Hostname }})" glances
與多個客戶端分享你的終端
你可以使用終端複用程式來與多個客戶端共享一個程式,以下命令會啟動一個名為 gotty 的新 tmux 會話來執行 glances(確保你安裝了 tmux):
# gotty tmux new -A -s gotty glances
要讀取不同的配置檔案,像下面那樣使用 –config "/path/to/file"
選項:
# gotty -tr --config "~/gotty_new_config" --title-format "GoTTY - {{ .Command }} ({{ .Hostname }})" glances
要顯示 GoTTY 版本,執行命令:
# gotty -v
訪問 GoTTY GitHub 倉庫以查詢更多使用示例:https://github.com/yudai/gotty 。
就這樣了!你有嘗試過了嗎?如何知道 GoTTY 的?透過下面的反饋欄與我們分享你的想法。
作者簡介:
Aaron Kili 是 Linux 和 F.O.S.S 愛好者,即將成為 Linux SysAdmin 和網路開發人員,目前是 TecMint 的內容創作者,他喜歡在電腦上工作,並堅信分享知識。
via: http://www.tecmint.com/gotty-share-linux-terminal-in-web-browser/
作者:Aaron Kili 譯者:geekpi 校對:wxy
相關文章
- 常見瀏覽器終端檢測瀏覽器
- html5多終端瀏覽器相容HTML瀏覽器
- 瀏覽器端儲存資料的終極指南瀏覽器
- 如何把Word裡的公式放到PowerPoint裡公式
- 別再讓你的web頁面在使用者瀏覽器端裸奔Web瀏覽器
- 用Java把大象放到冰箱裡Java
- Spartacus cart id 儲存在瀏覽器 local storage 裡面瀏覽器
- 瀏覽器端Less瀏覽器
- 你不知道的瀏覽器頁面渲染機制瀏覽器
- Web瀏覽器裡的那些事Web瀏覽器
- html5知識點:多終端瀏覽器相容HTML瀏覽器
- 將php的session存放到redis裡面PHPSessionRedis
- 在瀏覽器裡使用SAPGUI瀏覽器GUI
- Linux終端居然也可以做檔案瀏覽器?Linux瀏覽器
- 終極相片瀏覽器:ApolloOne for Mac瀏覽器Mac
- 谷歌瀏覽器翻譯在哪裡開啟 谷歌瀏覽器的線上翻譯在哪裡設定谷歌瀏覽器
- 在瀏覽器裡使用SAPGUI裡的SE80瀏覽器GUI
- 如何在瀏覽器端加密瀏覽器加密
- 瀏覽器頁面渲染機制瀏覽器
- 瀏覽器彈出小頁面瀏覽器
- 微信端瀏覽器title值的修改瀏覽器
- 精選10款谷歌瀏覽器外掛武裝你的瀏覽器谷歌瀏覽器
- Pytest 如何把瀏覽器引數化?瀏覽器
- 瀏覽器搞笑漫畫精選,你喜歡啥瀏覽器?瀏覽器
- VS Code在瀏覽器預覽HTML頁面瀏覽器HTML
- 瀏覽器帶你學前端瀏覽器前端
- 瀏覽器之爭:程式設計師眼裡瀏覽器的地位 IE:我開了!瀏覽器程式設計師
- 瀏覽器之爭:程式設計師眼裡瀏覽器的地位IE:我開了!瀏覽器程式設計師
- 瀏覽器裡玩機器學習、深度學習瀏覽器機器學習深度學習
- webRTC——瀏覽器裡的音視訊通話Web瀏覽器
- 谷歌瀏覽器頁面放大縮小谷歌瀏覽器
- 瀏覽器頁面載入過程瀏覽器
- 移動端瀏覽器問題瀏覽器
- 在 Linux 上用火狐瀏覽器保護你的隱私Linux瀏覽器
- 微信瀏覽器內禁止頁面回退返回瀏覽器
- 如何重用瀏覽器tab開啟頁面瀏覽器
- 國內安卓端瀏覽器調研安卓瀏覽器
- 谷歌瀏覽器除錯移動端谷歌瀏覽器除錯