身為數位遊牧工程師,或是公司數百台電腦的保姆,在不同的客戶端裝置連回伺服器進行設定是很常見的事。有的工程師會隨身攜帶一台筆電,裡頭存放自己常用的軟體跟工具,免得在同仁或者是公用電腦上綁手綁腳。
如果是連回 QNAP NAS,便容易得多。由於 NAS 預設透過瀏覽器管理圖形化介面,所以只要是能執行瀏覽器的電腦或行動裝置,就能存取 NAS 進行遠端作業。

終端機是工程師的浪漫
那麼,如果是要進入命令列、或者終端機模式呢?Windows、Mac 或者是 Linux 作業系統通常原生內建 SSH 客戶端,所以問題也不大。
然而,要在陌生的電腦上進行 SSH 連線,仍然存在幾個先天較為不便之處,比如:
一、太舊的作業系統或行動裝置不支援
如果是 2018 年以前的作業系統,或是 Android 及 iOS 裝置,都需要第三方軟體來當 SSH 客戶端。不少較為機敏的場域或工廠,執行的仍是較舊的作業系統。
二、安全性
SSH 連線本身是安全的,但是在連線前輸入帳密時,仍有可能被側錄。QNAP NAS 的圖形化管理介面在登入時提供兩步驟驗證,SSH 則是預設沒這個功能。
再來,在外網時,未必能夠透過對應的埠口來連線,比如 NAS 只有對外開放一個 8080 的QTS 介面埠口,此時 SSH 是進不來的。
三、工作階段的持續性
SSH 連線後在伺服器上進行的工作,預設會在斷線後停止執行。如果工作內容是下載較大的檔案、或是需要時間處理,總不能一直賴在客戶端電腦前,或是在公用電腦上讓連線保持開啟。
如何解決上述問題?我們要達成的是:
1、用瀏覽器就能進入終端機模式
2、在不同的客戶端斷線後,工作階段仍會繼續
先讓工作不會被中斷
維持工作階段這件事是比較好解決的。QTS 本身不存在工作階段的問題,重點是終端機介面。我們透過 Linux 內建的 screen 或是 Tmux 之類的第三方工具都可以達成,QNAP NAS 的終端機模式並沒有把 screen 這個功能拿掉,透過它來維持工作階段最為簡單方便。

Screen 的操作非常簡單。在終端機鍵入「screen」就能建立一個新的工作階段,此時的提示字元並不會改變,比如本來是 [user1@TS-464 ~]$,在 screen 裡的 shell 仍會維持一樣。
此時,就算用 screen 建立的工作階段仍在執行,SSH 斷線了也不會有影響。
下次再進行 SSH 連線時,只要用「screen -r」重新接回工作階段即可。screen 可以建立多個工作階段,用「screen -list」來檢視工作階段的 pID,再用 -r pID 來接回對應的工作階段。
接著要解決第二個問題,如何在瀏覽器裡進入 QNAP NAS 的終端機模式。QTS 原生並沒有提供這個功能,最簡單的作法是透過容器工作站執行一個 Docker 應用程式,帶有 ssh-client 機能,之後就能從 QTS 介面直接開啟這個容器的終端機介面。
建立 Docker 應用程式最快的方式是用現有的映象檔。雖然我們需要的是 ssh-client 而非 ssh-server 服務,但是我們可以直接安裝 Docker Hub 上現有的 openssh-server,裡頭同樣包含有 client 機能。官方頁面有提供 yaml,佈署也會比較方便。

官方 yaml 範例參考 :
services:
openssh-server:
image: lscr.io/linuxserver/openssh-server:latest
container_name: openssh-server
hostname: openssh-server #optional
environment:
– PUID=1000
– PGID=1000
– TZ=Etc/UTC
– PUBLIC_KEY=yourpublickey #optional
– PUBLIC_KEY_FILE=/path/to/file #optional
– PUBLIC_KEY_DIR=/path/to/directory/containing/only/pubkeys #optional
– PUBLIC_KEY_URL=https://github.com/username.keys #optional
– SUDO_ACCESS=false #optional
– PASSWORD_ACCESS=false #optional
– USER_PASSWORD=password #optional
– USER_PASSWORD_FILE=/path/to/file #optional
– USER_NAME=linuxserver.io #optional
– LOG_STDOUT= #optional
volumes:
– /path/to/openssh-server/config:/config
ports:
– 2222:2222
restart: unless-stopped

建立後,到容器裡點選「執行」:

就可以進入終端機介面,並且 SSH 到 NAS 的母系統了:

再開啟兩步驟驗證才安心
如果沒有防火牆的顧慮,容器是可以直接從網址連入的。不過我們從文章一開始就強調要兼顧到安全性,所以透過 QTS 網頁介面來開啟容器工作站,反而會是比較安全的作法。
那麼,如何防止鍵盤側錄密碼呢?在陌生的電腦上總要小心點好。除了開啟螢幕小鍵盤用滑鼠輸入,目前沒有其它作法可以預防用攔截鍵盤輸入的方式取得帳密,能做的就是開啟兩階段驗證,然後時常更換密碼。

QTS 提供兩步驟驗證及 Authenticator 的作法來實現登入的安全性,至於 SSH 金鑰在這次的場景中就不適用了。
透過 Container Station 搭建的這條「瀏覽器任意門」,搭配 Screen 的工作階段保護,證明安全性、便利性與持續性之間也是可以兼顧的。這套組合技不必再依賴特定的客戶端軟體,也不必擔心網路斷線導致前功盡棄。下次 on-call 要救火時,即便沒有帶上慣用的筆電,只要有瀏覽器,一樣可以繼續保持生產力。
首圖由 Google Gemini AI 生成














