GoTTY:把你的 Linux 終端放到瀏覽器裡面

Go語言 Linux Tmux 編程語言 Linux技術 2017-04-25

GoTTY:把你的 Linux 終端放到瀏覽器裡面

GoTTY 是一個簡單的基於 Go 語言的命令行工具,它可以將你的終端(TTY)作為 web 程序共享。它會將命令行工具轉換為 web 程序。 -- Aaron Kili

本文導航
  • -先決條件 …… 08%

  • -如何在 Linux 中安裝 GoTTY …… 10%

  • -如何在 Linux 中使用 GoTTY …… 17%

  • -如何在 Linux 中自定義 GoTTY …… 32%

  • -如何在 GoTTY 中使用安全功能 …… 43%

    • -允許客戶端在終端中運行命令 …… 45%

    • -使用基本(用戶名和密碼)驗證運行 GoTTY …… 54%

    • -Gotty 生成隨機 URL …… 61%

    • -帶有 SSL/TLS 使用 GoTTY …… 70%

    • -與多個客戶端分享你的終端 …… 80%

編譯自: http://www.tecmint.com/gotty-share-linux-terminal-in-web-browser/

作者: Aaron Kili

譯者: geekpi

GoTTY 是一個簡單的基於 Go 語言的命令行工具,它可以將你的終端(TTY)作為 web 程序共享。它會將命令行工具轉換為 web 程序。

它使用 Chrome OS 的終端仿真器(hterm)來在 Web 瀏覽器上執行基於 JavaScript 的終端。重要的是,GoTTY 運行了一個 Web 套接字服務器,它基本上是將 TTY 的輸出傳輸給客戶端,並從客戶端接收輸入(即允許客戶端的輸入),並將其轉發給 TTY。

它的架構(hterm + web socket 的想法)靈感來自 Wetty 項目[1],它使終端能夠通過 HTTP 和 HTTPS 使用。

先決條件

你需要在 Linux 中安裝 GoLang (Go 編程語言)[2] 環境來運行 GoTTY。

如何在 Linux 中安裝 GoTTY

如果你已經有一個可以工作的 Go 語言環境[3],運行下面的 go get 命令來安裝它:

# go get github.com/yudai/gotty

上面的命令會在你的 GOBIN 環境變量中安裝 GOTTY 的二進制,嘗試檢查下是否如此:

# $GOPATH/bin/

GoTTY:把你的 Linux 終端放到瀏覽器裡面

檢查 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[4] 來從 Web 瀏覽器中查看系統分區空間及使用率。

# gotty df -h

GoTTY 默認會在 8080 啟動一個 Web 服務器。在瀏覽器中打開 URL:http://127.0.0.1:8080/,你會看到運行的命令彷彿運行在終端中一樣:

GoTTY:把你的 Linux 終端放到瀏覽器裡面

Gotty 查看 Linux 磁盤使用率

如何在 Linux 中自定義 GoTTY

你可以在 ~/.gotty 配置文件中修改默認選項以及終端,如果該文件存在,它會在每次啟動時加載這個文件。

這是由 getty 命令讀取的主要自定義文件,因此,按如下方式創建:

# touch ~/.gotty

併為配置選項設置你自己的有效值(在此處查找所有配置選項[5])以自定義 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 命令行編輯器[6]在 Web 瀏覽器中打開文件 fossmint.txt 進行編輯:

# gotty -w vi fossmint.txt

以下是從 Web 瀏覽器看到的 vi 界面(像平常一樣使用 vi 命令):

GoTTY:把你的 Linux 終端放到瀏覽器裡面

Gotty Web Vi 編輯器

使用基本(用戶名和密碼)驗證運行 GoTTY

嘗試激活基本身份驗證機制,這樣客戶端將需要輸入指定的用戶名和密碼才能連接到 GoTTY 服務器。

以下命令使用 -c 選項限制客戶端訪問,以向用戶詢問指定的憑據(用戶名:test 密碼:@67890):

# gotty -w -p "9000" -c "test@67890" glances

GoTTY:把你的 Linux 終端放到瀏覽器裡面

使用基本驗證運行 GoTTY

Gotty 生成隨機 URL

限制訪問服務器的另一種方法是使用 -r 選項。GoTTY 會生成一個隨機 URL,這樣只有知道該 URL 的用戶才可以訪問該服務器。

還可以使用 -title-format "GoTTY – {{ .Command }} ({{ .Hostname }})" 選項來定義瀏覽器標題。glances[7] 用於顯示系統監控統計信息:

# gotty -r --title-format "GoTTY - {{ .Command }} ({{ .Hostname }})" glances

以下是從瀏覽器中看到的上面的命令的結果:

GoTTY:把你的 Linux 終端放到瀏覽器裡面

使用 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

與多個客戶端分享你的終端

你可以使用終端複用程序[8]來與多個客戶端共享一個進程,以下命令會啟動一個名為 gotty 的新 tmux 會話[9]來運行 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[10] 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

  • [1]: Wetty 項目 - http://www.tecmint.com/access-linux-server-terminal-in-web-browser-using-wetty/

  • [2]: GoLang (Go 編程語言) - http://www.tecmint.com/install-go-in-linux/

  • [3]: 可以工作的 Go 語言環境 - http://www.tecmint.com/install-go-in-linux/

  • [4]: df - /tag-df.html

  • [5]: 在此處查找所有配置選項 - https://github.com/yudai/gotty#options

  • [6]: vi 命令行編輯器 - /tag-vi.html

  • [7]: glances - https://linux.cn/article-6882-1.html

  • [8]: 終端複用程序 - https://linux.cn/article-8421-1.html

  • [9]: tmux 會話 - https://linux.cn/article-8421-1.html

  • [10]: Aaron Kili - http://www.tecmint.com/author/aaronkili/

相關推薦

推薦中...