2026年10月1日 星期四

GX10 跨機控制 Pi 5:從 SSH 金鑰到遠端自動化

這台 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」,三者互補,不需要三選一。

安全注意事項(重要)

  1. 別在對話/腳本裡放密碼 — 金鑰化之後,密碼只存在 Pi 的 /etc/shadow
  2. 防火牆 — Pi 5 的 VNC(5900)、Samba(445)目前對區網開放;若接出外網,務必只限可信 IP 或走 Tailscale
  3. authorized_keys — chmod 700 ~/.ssh、chmod 600 authorized_keys,且不要用 root 跑日常操作
  4. 金鑰管理 — 這支 id_ed25519 現在有 pi@.236 的完整家目錄權限,等同鑰匙;GX10 本身要有盤備份(已有每日備份)

接下來可以做的事

  • [ ] 從 GX10 直接部署 Hailo 視覺模型(偵測 → 推論 → 事件)
  • [ ] 把 Pi 5 的溫度/磁碟併入 GX10 的每週監控報表
  • [ ] mediamtx 接攝影機,GX10 做離線影片分析
  • [ ] 兩台 Hermes fleet 協作:GX10 跑推理、Pi 跑執行,透過 SSH + MQTT 交接

結論

「A 機控制 B 機」沒有黑科技,核心就三件事:金鑰免登入 + heredoc 遠端腳本 + 清楚的管道分工。有了這三樣,兩台機器在我日常的工作流裡已經變成一台——GX10 是頭腦,Pi 5 是觸角與四肢。

沒有留言:

張貼留言