這台 NVIDIA GB10 的 GX10(121GB 統一記憶體、20 核 ARM)是我本機的主力;另一台 Raspberry Pi 5(16GB RAM、NVMe SSD、Debian 13)則是區網上的邊緣節點——跑 Hailo 視覺加速器、Ollama 小模型、RTSP 串流伺服器、兩支 Telegram bot。
這篇文章記錄我如何讓 GX10 透過網路、免密碼、用 terminal 完整控制 Pi 5 的完整流程與實際成果。
架構概觀
| GX10(控制端) | Pi 5(被控端) | |
|---|---|---|
| 角色 | AI 主力機 + Hermes Agent | 邊緣 AI + 媒體 + 自動化 |
| 記憶體 | 121GB 統一記憶體 | 16GB DDR5 |
| 特色 | GB10 GPU、大模型推理 | Hailo 加速器、mediamtx、低耗電 |
| 位址 | 192.168.1.25 | 192.168.1.236(Wi-Fi) |
兩台都在同一區網,控制路徑非常直接:SSH。
第一步:SSH 金鑰免密碼(最關鍵)
原則:密碼只打一次,金鑰管往後。 在對話或腳本裡流傳密碼是壞習慣,金鑰才是對的答案。
# 1) 在 GX10 產生金鑰(ed25519,無密碼)
ssh-keygen -t ed25519 -N "" -C "hermes-gx10"
# 2) 把公鑰裝到 Pi 5(這一步需要 Pi 的密碼,只用這一次)
cat ~/.ssh/id_ed25519.pub | ssh pi@192.168.1.236 \
'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys'
裝完金鑰後,GX10 端任何腳本、任何 AI agent 都能免密碼登入 Pi 5——這是「機器控制機器」的前提。
# 3) 驗證免密碼登入
ssh -o BatchMode=yes pi@192.168.1.236 'hostname && uptime'
BatchMode=yes 的作用:如果金鑰沒裝好,它會直接失敗而不掛起等密碼——適合放在自動腳本裡。
第二步:遠端執行命令的正確姿勢
單指令直接跑:
ssh pi@192.168.1.236 'systemctl status docker --no-pager'
多行腳本用 heredoc 一次送——不要寫 10 行 ssh 各跑一次(每次都有連線開銷):
ssh pi@192.168.1.236 bash -s <<'EOF'
echo "=== OS ==="
cat /etc/os-release | head -2
echo "=== 溫度 ==="
cat /sys/class/thermal/thermal_zone*/temp
echo "=== Docker ==="
docker ps --format '{{.Names}} | {{.Status}}'
EOF
bash -s 表示「把 stdin 當 script 跑」,heredoc 的引號 <<'EOF' 避免本地 shell 提前展開 $。
第三步:實際盤點結果
用上面的手法盤了一輪,這台 Pi 5 比我預想的豐富:
AI 堆疊
- Hailo 邊緣加速器(
/dev/hailo0)— 獨立 NPU,23~46 TOPS 級,專跑視覺推論 - Ollama:qwen2.5:3b、Llama3:8b、gemma4:e2b、llama3.2:1b— 全是小模型,與 Pi 的定位吻合
- Hermes Agent(Docker,跑了 2 個月)+ searxng
媒體與服務
- mediamtx:RTSP 8554 / RTMP 1935 / HLS 8888— 一台完整的影音串流伺服器
- Samba + NFS — 區網檔案伺服器
- 兩支 Telegram bot(searchbot / cronbot)— cron 排程 + 搜尋自動化
- VNC(5900) 桌面遠端
健康狀態
- 溫度 36.4°C(GX10 滿負載 73~81°C,對比鮮明)
- 16GB 只用 1.5GB、NVMe 234GB 用了 27%— 資源非常寬裕
控制管道選擇:SSH vs MQTT vs HTTP
| 管道 | 時機 | 本環境現況 |
|---|---|---|
| SSH | 萬能:指令、檔案、排程、除錯 | ✅ 本次建置完成 |
| MQTT | 高頻、事件型、物聯網(溫控、開關) | ✅ mosquitto 已在跑 |
| HTTP/REST | 服務化 API(如 Ollama、mediamtx) | ✅ 各服務自帶 |
實務上:「控制與除錯用 SSH,狀態與事件用 MQTT,服務對服務用 HTTP」,三者互補,不需要三選一。
安全注意事項(重要)
- 別在對話/腳本裡放密碼 — 金鑰化之後,密碼只存在 Pi 的
/etc/shadow - 防火牆 — Pi 5 的 VNC(5900)、Samba(445)目前對區網開放;若接出外網,務必只限可信 IP 或走 Tailscale
- authorized_keys —
chmod 700 ~/.ssh、chmod 600 authorized_keys,且不要用 root 跑日常操作 - 金鑰管理 — 這支
id_ed25519現在有 pi@.236 的完整家目錄權限,等同鑰匙;GX10 本身要有盤備份(已有每日備份)
接下來可以做的事
- [ ] 從 GX10 直接部署 Hailo 視覺模型(偵測 → 推論 → 事件)
- [ ] 把 Pi 5 的溫度/磁碟併入 GX10 的每週監控報表
- [ ] mediamtx 接攝影機,GX10 做離線影片分析
- [ ] 兩台 Hermes fleet 協作:GX10 跑推理、Pi 跑執行,透過 SSH + MQTT 交接
結論
「A 機控制 B 機」沒有黑科技,核心就三件事:金鑰免登入 + heredoc 遠端腳本 + 清楚的管道分工。有了這三樣,兩台機器在我日常的工作流裡已經變成一台——GX10 是頭腦,Pi 5 是觸角與四肢。
沒有留言:
張貼留言