前言
接這篇 電視盒子改造(二):用 Tailscale 打造免費家用 IP 出口 後,接下來要讓它發揮更大作用——裝上 Termux,讓盒子同時變成一台 SSH 和 SFTP 伺服器。
什麼意思呢?簡單說,裝好之後你可以從電腦或手機用終端機直接連進電視盒子,像在 Linux 伺服器上一樣操作;也可以用 SFTP 客戶端(比如 FileZilla)直接拖曳檔案,把盒子外接的 USB 硬碟當成家用 NAS 用。
這系列改造的核心精神就一個字:榨。一台幾百塊的二手電視盒子,跑個 Android App 就能變身開發機、中繼站、檔案伺服器,CP 值高到我自己都覺得有點奢侈。
什麼是 Termux?
Termux 是一個 Android 終端模擬器加 Linux 環境套件。裝好之後你在手機或電視盒子上就能跑 bash、裝 apt 套件、跑 Python、啟服務——基本上就是一台縮在 Android 底下的迷你 Linux 伺服器。
跟傳統 Android 的「Shell 應用程式」不同,Termux 有自己的套件庫(package repository),不依賴 root 權限,安裝的套件也只會存在 Termux 的目錄裡,不會跟系統其他 App 衝突。對電視盒子來說,這代表你不需要刷機、不需要 root,就能擁有一台真正的 Linux 環境。
第一步:下載並安裝 Termux 與 Termux:Boot
Termux 和 Termux:Boot 的 APK 檔案要從 F-Droid 下載,因為 Google Play 版本已經停更(最後更新停在 2022 年)。
需要下載的兩個檔案:
| 套件 | 下載連結 | 用途 |
|---|---|---|
| Termux | com.termux_1022.apk | 主程式,提供終端機環境 |
| Termux:Boot | com.termux.boot_1000.apk | 開機自動啟動 Termux 的後台服務 |
安裝方式有三種,挑你順手的:
方法一:用電視盒子的瀏覽器直接下載(最簡單)
打開盒子上的瀏覽器(比如 TV Browser 或 Puffin),分別輸入上面的 F-Droid 網址下載 APK。下載完用檔案總管點擊安裝即可。
⚠️ 如果安裝時跳出「允許安裝未知來源 App」的提示,到設定裡打開允許就好。
方法二:透過 CX 檔案總管的 FTP 功能傳輸(適合不習慣打字的人)
- 在電腦和手機上先把 APK 下載好
- 打開電視盒子上的 CX 檔案總管(沒有就去 Google Play 裝)
- 點擊 網路 > FTP > 啟動
- 畫面會顯示 FTP 位址、連接埠、帳號密碼
- 用電腦或手機的 FTP 客戶端(比如 FileZilla)把 APK 傳到盒子裡
- 回到 CX 檔案總管找到檔案,點擊安裝
方法三:用 ADB 從電腦遠端安裝(極客首選)
如果你已經照著這篇 用 ADB 工具管理你的 Android TV 盒子 開啟了開發者選項,那這一步會非常順:
# 在電腦上下載 APK
wget https://f-droid.org/repo/com.termux_1022.apk
wget https://f-droid.org/repo/com.termux.boot_1000.apk
# 連接電視盒子(替換成盒子的實際 IP)
adb connect 192.168.88.166
# 遠端安裝
adb install com.termux_1022.apk
adb install com.termux.boot_1000.apk
💡 小提醒: 如果 adb install 回傳
Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE],代表盒子之前裝過舊版 Termux(Google Play 版)。先手動解除安裝舊版再裝一次就好。
第二步:安裝 OpenSSH 並啟動服務
安裝好 Termux 和 Termux:Boot 之後,打開 Termux App,開始設定 SSH 服務。
以下指令全部在 Termux 的終端機裡執行。如果暫時沒有實體鍵盤接上盒子,就用遙控器慢慢點虛擬鍵盤輸入——等 SSH 啟動後,以後都不用再碰遙控器打字了。
# 更新 Termux 套件庫(第一次務必執行)
pkg update && pkg upgrade -y
# 安裝 OpenSSH
pkg install openssh -y
# 設定 SSH 登入密碼(跟 Linux 的 passwd 一樣)
passwd
# 取得目前 Termux 的使用者名稱(等會兒連線會用到)
whoami
# 授權 Termux 存取手機/盒子的儲存空間
termux-setup-storage
執行 termux-setup-storage 時,畫面會跳出權限請求視窗,用遙控器選「允許」。這一步很重要,不然之後 SFTP 存取外接硬碟會找不到路徑。
最後啟動 SSH 服務做測試:
sshd
如果沒有回傳錯誤訊息,代表 SSH 服務已經啟動成功。
第三步:從電腦連線測試
打開電腦的終端機(或 Windows 的 PowerShell / MobaXterm),輸入:
ssh <termux使用者名稱>@<電視盒子IP> -p 8022
注意幾個重點:
- 連接埠是 8022,不是一般 Linux 的 22。這是 Termux 的預設設定,改起來麻煩,記一下就好。
- 使用者名稱是 Termux 的,不是 Android 的。如果你剛剛跑過
whoami,用那個回傳的名稱。通常是u0_a開頭的一串字。 - 密碼是你剛剛用
passwd設定的,不是 Android 的鎖屏密碼。
連線成功後,你會看到類似這樣的提示:
代表你已經成功連進電視盒子的 Termux 環境了。恭喜,第一步完成。
第四步:設定開機自動啟動 SSH
現在每次都要手動打開 Termux App 再執行 sshd 有點麻煩。我們來設兩個東西:.bashrc 讓 SSH 在 Termux 啟動時自動開啟,以及 Termux:Boot 讓盒子重新開機後自動啟動 Termux。
4-1:設定 .bashrc 自動啟動 SSH
在 Termux 裡輸入:
nano ~/.bashrc
在檔案末尾貼上以下內容:
# 防止 Termux 被系統休眠
termux-wake-lock
# 檢查並啟動 SSH 服務(Port 8022)
if ! pgrep -x "sshd" > /dev/null; then
echo "▶ 啟動 SSH 服務 (Port 8022)..."
sshd
fi
按 Ctrl + X,接著按 Y 存檔離開。
讓設定立即生效:
source ~/.bashrc
這段腳本的邏輯很直覺:
termux-wake-lock會向 Android 系統要求保持 Termux 在背景執行,不會被系統自動關閉或休眠pgrep檢查 sshd 是否已經在跑,避免重複啟動造成連接埠衝突
4-2:設定 Termux:Boot 開機自動啟動
Termux:Boot 這個 App 的作用是監聽 Android 的 BOOT_COMPLETED 廣播事件——也就是說,當電視盒子重新開機完成後,它會自動啟動 Termux(執行我們設定的腳本)。
在 Termux 裡輸入:
mkdir -p ~/.termux/boot
nano ~/.termux/boot/start-sshd
貼上以下內容:
#!/data/data/com.termux/files/usr/bin/sh
termux-wake-lock
sshd
按 Ctrl + X,Y 存檔。然後賦予執行權限:
chmod +x ~/.termux/boot/start-sshd
4-3:註冊 Termux:Boot 服務
回到電視盒子畫面,打開 Termux:Boot App。只需要打開這一次,它就會向 Android 系統註冊自己。以後盒子開機都會自動觸發,不用再手動打開。
💡 小提醒: Termux:Boot 打開後會自動關閉,電視畫面上不會有任何視覺變化,這是正常的。
4-4:測試開機自動啟動
現在可以測試了。把電視盒子拔掉電源,等 10 秒後重新插上(或者用遙控器重新開機)。
等約 2 分鐘(Android 開機需要時間,Termux 和 SSH 服務也要時間啟動),然後從電腦連線測試:
ssh <使用者名稱>@<電視盒子IP> -p 8022
如果連上了,代表整套自動啟動機制運作正常。
🎉 註: Termux 會在背景默默執行,你的電視畫面不會有任何變動,完全不會影響平常看 Netflix、Disney+ 的體驗。
第五步:用 SFTP 管理檔案(搭配 USB 外接硬碟)
SSH 連進去了,但如果你只是想傳檔案、管理資料夾,用 SFTP 客戶端會比在終端機裡敲指令方便得多。
推薦的 SFTP 客戶端
| 平台 | 推薦軟體 | 備註 |
|---|---|---|
| Windows | FileZilla (免費)或 WinSCP | FileZilla 跨平台,WinSCP 對 Windows 更友善 |
| macOS | FileZilla 或 Cyberduck | Cyberduck 介面更現代化 |
| Linux | FileZilla 或 gFTP | 都可以用 apt 安裝 |
| Android | CX 檔案總管 內建 SFTP | 手機上最方便的選擇 |
連線設定
以 FileZilla 為例,填入以下資訊:
- 主機(Host): 電視盒子的 IP 位址
- 協定(Protocol): SFTP - SSH File Transfer Protocol
- 連接埠(Port): 8022
- 使用者名稱: Termux 的使用者名稱(
whoami的結果) - 密碼: 你設定的 SSH 密碼
連線成功後,你會看到左邊是電腦的檔案,右邊是電視盒子的檔案。直接拖曳就能傳輸。
存取外接 USB 硬碟
如果你的電視盒子有外接 USB 硬碟,Termux 裡的存取路徑如下:
| 路徑 | 說明 |
|---|---|
/sdcard/ | Android 內部儲存空間 |
/sdcard/Download/ | 下載目錄 |
/storage/external-1/ | 外接 USB 硬碟(實際路徑可能因系統而異) |
如果不知道外接硬碟的正確路徑,在 Termux 裡跑這個指令搜尋:
find /storage -maxdepth 2 -type d 2>/dev/null
找到硬碟的掛載點後,把它記下來。以後用 SFTP 連進去就能直接存取。
進階玩法:搭配 Tailscale 異地存取
如果你已經照著 上一篇教學 裝了 Tailscale,那現在可以玩更厲害的了——從外面連回家裡的 SSH。
ssh <使用者名稱>@<Tailscale IP> -p 8022
Tailscale 會自動幫你打 NAT 穿透,不需要在路由器設 Port Forwarding,也不需要固定 IP。不管你在台灣、國外、甚至大陸(配合 Tailscale 的 DERP 中繼),都能連回家裡的電視盒子。
再加上 SFTP,你就可以:
- 在外地隨時存取家裡 USB 硬碟的檔案
- 把盒子當成小型檔案備份站
- 在盒子跑 Python 腳本處理檔案,隨時用 SFTP 查看結果
常見問題
Q:重開機後 SSH 連不上怎麼辦?
先確認幾件事:
- 等夠 2 分鐘。 Android 開機到網路就緒到 Termux 啟動,大約需要 90-120 秒。
- 確認 Termux:Boot 有註冊。 打開 Termux:Boot App 看一次,有顯示 Termux 在列表裡就代表註冊成功。
- 檢查防火牆。 某些電視盒子的網路設定會阻擋入站連線,到路由器的 DHCP 清單確認盒子 IP 沒有變。
- 手動啟動測試。 SSH 進去後跑
sshd,如果回傳Could not load host key,跑ssh-keygen -A重新產生金鑰再試。
Q:SSH 連線很慢或卡住?
Termux 跑在 Android 上,網路效能比不上真正的 Linux 伺服器。如果覺得慢:
- 確保盒子連的是 5GHz WiFi,不要 2.4GHz
- 減少背景下載/串流的流量
- 如果盒子支援有線網路,用 USB 轉 Ethernet 轉接器
Q:Termux 會被 Android 系統殺掉嗎?
有可能。Android 的記憶體管理機制會自動關閉背景 App。termux-wake-lock 能大幅降低被殺的機率,但不是 100% 保證。如果發現 SSH 偶爾斷線:
- 在盒子設定裡把 Termux 加入「不限制背景活動」的白名單
- 鎖定 Termux 在最近應用程式列表(不要滑掉)
- 考慮用 Termux:Widget 在桌面上加一個捷徑,隨時點開保持活躍
總結
到這裡,你的電視盒子已經具備以下能力:
| 功能 | 狀態 |
|---|---|
| SSH 終端機遠端存取 | ✅ |
| SFTP 檔案傳輸 | ✅ |
| 開機自動啟動 | ✅ |
| Tailscale 異地存取 | ✅(需搭配上一篇設定) |
一台幾百塊的電視盒子,加上免費的 Termux,就能擁有一台 24 小時開機、隨時可連線的迷你 Linux 伺服器。外接 USB 硬碟之後更是直接變身家用 NAS,不用花錢買群暉或威聯通。
下一篇我們會來聊聊怎麼在 Termux 裡安裝 Docker,讓這台迷你伺服器跑更多服務。敬請期待。