本篇介紹如何使用 ttyd
透過網頁使用 Linux 系統中的終端機,處理各種互動式工作。
ttyd 是一個簡單的指令工具,可以讓使用者透過網頁介面使用 Linux 系統的終端機,支援各種互動式的操作、安全加密、分享 session 等,是一個小巧好用的小工具。
這裡我們以 Ubuntu Linux 系統做為測試環境,示範如何安裝與使用
ttyd
。
安裝 ttyd
首先使用 apt
安裝一些編譯 ttyd
所需要的套件:
# 安裝必要套件
sudo apt-get install cmake g++ pkg-config git
vim-common libwebsockets-dev libjson-c-dev libssl-dev
使用 git
從 GitHub 下載最新的 ttyd
原始碼:
# 下載 ttyd 原始碼
git clone https://github.com/tsl0922/ttyd.git
使用 CMake 編譯及安裝:
# 編譯與安裝 cd ttyd && mkdir build && cd build cmake .. make sudo make install
使用 ttyd
分享終端機
安裝好之後就可以使用 ttyd
這個指令來啟動網頁的終端機介面,這個指令有許多的參數可以使用:
參數 | 說明 |
---|---|
-p --port |
指定連接埠,預設為 7681 ,而 0 代表隨機選取。 |
-i --interface |
指定網路介面,例如 eth0 或 /var/run/ttyd.sock 。 |
-c --credential |
指定認證用的帳號密碼檔案(格式為 username:password )。 |
-u --uid |
指定執行 ttyd 的使用者 ID。 |
-g --gid |
指定執行 ttyd 的群組 ID。 |
-s --signal |
離開 ttyd 時傳送的信號(預設為 SIGHUP )。 |
-a --url-arg |
允許使用者由 URL 的參數帶入指令。 |
-R --readonly |
唯讀模式。 |
-t --client-option |
指定傳送給 client 的設定,格式為 key=value 。 |
-T --terminal-type |
指定終端機類型,預設為 xterm-256color 。 |
-O --check-origin |
不允許不同來源的 WebSocket 連線。 |
-m --max-clients |
指定 client 數量上限,預設為 0 (無上限)。 |
-o --once |
僅接受一個 client,離線後就結束。 |
-B --browser |
以系統預設的瀏覽器開啟終端機。 |
-I --index |
自行指定 index.html 的位置。 |
-S --ssl |
啟用 SSL 加密。 |
-C --ssl-cert |
指定 SSL certificate 檔案。 |
-K --ssl-key |
指定 SSL key 檔案。 |
-A --ssl-ca |
指定 SSL ca 檔案。 |
-d --debug |
設定除錯訊息輸出層級,預設為 7 。 |
-v --version |
顯示版本。 |
-h --help |
顯示使用說明。 |
ttyd
執行時必須要指定一個啟動指令,最常見的就是 Linux 的預設 shell,也就是 bash
:
# 將 ttyd 開在 8080 連接埠,使用 bash shell ttyd -p 8080 bash
執行這行指令即可啟動一個基本的 ttyd
伺服器,它預設只會開在本機的 127.0.0.1
網路介面上,接著就可以在本機以瀏覽器開啟 http://127.0.0.1:8080/
來查看這個網頁介面的終端機。
除了常見的 shell 之外,也可以使用各種文字介面的指令作為啟動指令,例如 Vim 編輯器:
# 使用 Vim 編輯器作為啟動指令 ttyd -p 8080 vim
若要讓使用者以 Linux 系統的帳號與密碼登入,可以使用 login
作為啟動指令:
# 文字登入介面 sudo ttyd -p 8080 login
Nginx
如果想要將 ttyd
放在 Nginx 伺服器後方,透過 Proxy 的方式提供連線,可以參考以下的 Nginx 設定:
server { # ... location ^~ /console { proxy_pass http://127.0.0.1:8080/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }
在 Nginx 的設定檔中加入這段設定之後,就可以將 /console
這個位置導向至本機的 http://127.0.0.1:8080/
,讓 ttyd
跟一般的網頁整合在一起。
新增 Systemd 服務
如果想要讓 Linux 系統的 Systemd 自動管理 ttyd
伺服器,讓它再開機時自動啟動,可以參考 Systemd
的使用教學以及 Systemd 新增服務設定教學,新增一個設定檔 /etc/systemd/system/ttyd.service
:
[Unit] Description=ttyd server [Service] Type=simple ExecStart=/usr/local/bin/ttyd -p 8080 login Restart=always [Install] WantedBy=multi-user.target
將權限設定為 644:
sudo chmod 644 /etc/systemd/system/ttyd.service
重新載入 Systemd 設定檔:
# 重新載入 Systemd 設定檔
sudo systemctl daemon-reload
接著就可以使用 systemctl
指令啟動自訂的 ttyd 伺服器:
# 啟動自訂的 ttyd 伺服器
sudo systemctl start ttyd
penny
謝謝!