Claude Code

把 Claude Code 放到備用 Mac:隔離 Agent 工作站的價值與安全界線

讓 Claude Code 常駐備用 Mac、從手機或主力機遠端交辦任務,是 HN 熱門的隔離工作站做法。本文整理指南的 12 步設定要點(乾淨帳號、SSH、防休眠、剪貼簿同步、Tailscale)、與 Container 的取捨,以及高權限配置的安全界線。

把 Claude Code 放到備用 Mac:隔離 Agent 工作站的價值與安全界線 — 文章封面
本頁內容7 個段落
  1. 這個架構實際上長什麼樣
  2. 為什麼不只用 Container
  3. 獨立機器不等於自動安全
  4. 比較安全的設定順序
  5. 什麼時候值得開啟 GUI Control
  6. 這個做法最適合誰
  7. 參考來源

最近 Hacker News 上有一個很實際的話題:把一台閒置 Mac 設定成 Claude Code 專用工作站,讓 Agent 可以長時間執行,再從主力電腦透過 SSH、或從手機遠端交付任務。原始設定指南

這個方向的價值很清楚。Agent 不必綁在日常使用的 Laptop,也能操作只有 macOS 才有的工具和 GUI App。不過「使用獨立機器」只是在縮小風險範圍,不代表可以取消所有權限控制。原始指南包含跳過 Permission Prompt、Passwordless sudo 等高權限設定;這些配置適合作者自己的實驗環境,並不應直接視為一般使用者的安全預設。

這個架構實際上長什麼樣

你可以把它理解成一台遠端 Agent Box:

Main Mac / Phone

        │ SSH or approved remote channel

Dedicated user on spare Mac

        ├── Claude Code
        ├── isolated repositories
        ├── scoped API credentials
        └── optional GUI / computer-use access

主力電腦只負責發送任務和查看結果。程式碼執行、套件安裝、Browser Automation 和其他 Agent 行為都留在備用 Mac。即使 Agent 做錯事,理論上也不會直接碰到主力機器上的照片、文件、瀏覽器 Session 或私人 Keychain。

原指南是 12+ 步的完整設定流程,幾個關鍵步驟值得點名:目標機若有個人資料先整機抹除(Erase All Content and Settings);建立全新本機帳號且不登入 Apple ID;開啟 Remote Login(SSH);用 pmset 讓機器插電永不休眠(含闔蓋不解眠),否則 macOS 開置十分鐘就會從網路上消失;剪貼簿則靠 pbcopy/pbpaste 透過 SSH 加密同步,指南提供的 clip.sh 還加了圖片支援——手機上複製的圖可以直接貼進遠端的 Claude Code session。

設定流程中的幾個核心指令如下。首先是開啟 Remote Login(SSH):

sudo systemsetup -setremotelogin on

接著是指南為專用帳號設定的免密碼 sudo(即前文提到的高權限配置):

echo "<user> ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/<user>-nopasswd >/dev/null
sudo chmod 440 /etc/sudoers.d/<user>-nopasswd
sudo visudo -cf /etc/sudoers.d/<user>-nopasswd   # must print 'parsed OK'

然後在主力機產生 SSH Key 並安裝到目標機,之後連線應不再詢問密碼:

ssh-keygen -t ed25519
ssh-copy-id <user>@<target-host>.local

避免機器休眠的 pmset 設定如下(改用電池時要以 -a 取代 -c,但會增加耗電):

sudo pmset -c sleep 0
sudo pmset -c disablesleep 1
sudo pmset -c displaysleep 0
defaults -currentHost write com.apple.screensaver idleTime 0

最後是透過 SSH 在目標機上安裝 Claude Code:

ssh <user>@<target-host>.local 'curl -fsSL https://claude.ai/install.sh | bash -s -- 2.1.219'

為什麼不只用 Container

Container 對大部分 Coding 工作仍是更簡單的選擇:建立快、容易重置,也能限制 Filesystem 和 Network。但它無法完整覆蓋所有 macOS 場景。

方案 適合情況 主要限制
Container CLI、測試、Build、一般 Repository 工作 GUI、macOS App 和 Hardware Integration 有限
備用 Mac Xcode、Unity、Browser、Computer Use、長時間任務 維護成本較高,權限設定錯誤時風險更大
主力 Mac 短任務、需要人工即時監督 容易接觸私人資料與日常憑證

如果任務只需要 Git、Shell 和 Test Runner,先用 Container 通常更合理。備用 Mac 真正的優勢,是能提供完整 macOS Environment,同時與日常裝置分開。

獨立機器不等於自動安全

Agent Box 仍然可能接觸 Network、Cloud Account、Source Code 和 API Key。常見風險包括:

  • Agent 安裝未經審核的 Package 或執行 Repository 內的惡意 Script。
  • 過度寬鬆的 sudo 讓一個錯誤指令變成 System-level 破壞。
  • SSH 對公網開放後受到密碼猜測或憑證攻擊。
  • 把個人 GitHub、Apple ID 或主力 Cloud Credential 複製到備用機器。
  • Computer Use 取得 Screen Recording 和 Accessibility 權限後,可以操作更多 App。

尤其不應把 --dangerously-skip-permissionsNOPASSWD: ALL 當作第一步。兩者會讓操作變得順暢,但也會移除最重要的安全摩擦。若確實需要無人值守,應先從特定 Repository、特定指令和最低權限 Credential 開始,再逐項增加能力。

比較安全的設定順序

1. 先建立乾淨的身份邊界

使用專門的本機帳戶,不登入私人 Apple ID,也不要同步個人 iCloud、Browser Profile 或 Password Manager。Repository 和工作資料只放必要內容。

2. 限制遠端入口

使用 SSH Key,關閉不需要的 Remote Service,並優先把連線限制在 Local Network 或受控 VPN。不要為了方便直接把 SSH Port 暴露到公網。指南自己的做法可作為參考:hostname.local 只在區網解析,要跨網路存取時用 Tailscale——WireGuard 點對點加密隧道,公網零暴露;而且加入網路只取得可達性,SSH 與螢幕共享仍需各自的金鑰或密碼,等於多一層驗證。手機端的控制則走 Claude App 經 Anthropic 中繼,不直接開遠端埠。

3. 使用專用、低權限 Credential

為 Agent 建立獨立 GitHub Token、Cloud API Key 和測試帳戶。Token 只授予任務需要的 Repository 或 Resource,並設定 Rotation 和撤銷方式。

4. 保留 Approval Gate

檔案讀取、測試和無副作用的命令可以較寬鬆;Package Installation、System Setting、Credential Access、Deployment 和刪除操作應保留人工核准。高權限命令不要全域免密碼放行。

5. 把復原能力當成必要功能

程式碼必須進 Git,重要資料要有 Backup。Agent Box 應能快速重建,而不是變成另一台不能出錯的 Production Server。對長時間任務,記錄執行 Log、Commit 和產物位置,才能在失敗後判斷發生什麼事。

什麼時候值得開啟 GUI Control

讓 Agent 控制 GUI,適合 Xcode、Unity、Design Tool 或只能透過 Browser 操作的流程。但 macOS 的 Screen Recording 和 Accessibility 權限非常強。開啟之前,先確認該帳戶看不到私人視窗、訊息和其他使用者資料。

一個比較穩健的做法,是先完成純 SSH/CLI 工作流。只有當具體任務確實需要點擊、拖曳或 Screenshot Feedback 時,再為指定工具加入 GUI 權限。

實際啟用 Computer Use 時,指南的做法是在目標機上執行官方的 setup script,它會安裝 LaunchAgent 並啟用內建的 computer-use 工具(需要 tmux 與 Claude Pro 或 Max 方案):

ssh -t <user>@<target-host>.local \
  'curl -fsSL https://raw.githubusercontent.com/ykdojo/claude-controls-mac/main/setup-computer-use.sh -o setup-computer-use.sh && bash setup-computer-use.sh'

主力機端則安裝 ic script,之後就能用 ic 在目標機上啟動帶 Computer Use 的 Claude Code session(ic -c 續接、ic ls 列出 session、ic rc 遠端控制):

curl -fsSL https://raw.githubusercontent.com/ykdojo/claude-controls-mac/main/ic.sh -o ~/.local/bin/ic
chmod +x ~/.local/bin/ic
export IC_BOX="<user>@<target-host>.local"

這個做法最適合誰

備用 Mac Agent Box 適合需要長時間 Coding、macOS App Automation,或想把 AI Agent 與日常工作環境分開的人。它不是「完全放手讓 Agent 控制一台電腦」的捷徑,而是一個可以逐步授權、容易復原的隔離環境。

真正安全的重點不是機器夠不夠獨立,而是身份、Network、Credential、Approval 和 Recovery 是否都有清楚邊界。只要這些邊界還在,備用 Mac 才會是一個有用的 Agent 工作站,而不是一台新的高權限風險來源。

參考來源

本文由 AI 協助自上述來源整理,經人工審核後發布。

分享X電郵