Claude Code 遠端 Mac 部署:2026 SSH 指南

終端機可以登入,卻無法使用 Xcode、Simulator 或 Keychain,通常不是 Claude Code 本身的問題,而是部署節點選錯了。
最快解法:需要 macOS 專屬工具鏈的專案,選擇獨立的遠端 Mac;純跨平台專案則不必額外付費。先建立獨立帳戶與 SSH 金鑰,再配置專案權限、沙箱、憑據邊界和可恢復會話。
這篇適合三類讀者:沒有本地 Mac、但需要處理 iOS 或 macOS 專案的 Windows/Linux 開發者;希望把 AI 編碼工作與主力 Mac 隔離的移動端開發者;以及需要交付可複驗、可回收環境的平台工程師。
最後更新於 2026 年 8 月 17 日;安裝、認證、權限、沙箱、終端設定與 Apple Remote Login 資料,核實自 Claude Code 官方文件、認證說明、權限設定、沙箱說明 及 Apple Remote Login 文件。
先判斷:遠端 Mac 是否真的必要
遠端 Mac 不是所有 Claude Code 專案的預設答案。若專案只使用 Node.js、Python、Go、Java 或一般 REST API,現有 Linux 主機通常已能完成編輯、測試與部署。為這類工作另租 macOS,會增加月租、磁碟、頻寬與維護成本。
但只要專案依賴以下任一項,遠端 Mac 的價值就不同:
- Xcode、xcodebuild 或 iOS SDK。
- iOS Simulator、真機測試所需的 macOS 工具鏈。
- macOS Keychain、簽名憑證或 App Store 交付流程。
- 只在 macOS 上可正常執行的建置腳本。
- 需要長時間在線的 Xcode 打包或測試節點。
判斷時不要只看語言。先在專案根目錄建立依賴清單,列出 xcodebuild、simctl、簽名工具、Keychain、Homebrew 套件與測試命令。清單中若有 macOS 專屬項目,就應把 Claude Code 放到真實 macOS 節點,而不是在 Linux 上再加一層虛擬化。
Claude Code 官方列出的基本條件包括 macOS 10.15 或更新版本、至少 4GB 記憶體、Node.js 18 或更新版本,並要求網路連線以完成認證及 AI 處理。官方安裝文件 亦提醒,安裝方式與可用登入方案可能隨文件更新,發布前應再次核對。
第一階段:先把 SSH 基礎鏈路做成可診斷
遠端 Mac 的第一個風險不是 Claude Code,而是 SSH 只成功過一次。若沒有重連、傳檔和 Shell 環境檢查,後續任何「部署成功」都缺乏證據。
在 Mac 上開啟「系統設定」→「一般」→「共享」→「遠端登入」。Apple 的設定介面可將存取範圍限制為指定使用者,不必直接開放所有帳戶;若非必要,也不要啟用遠端使用者的完整磁碟存取。
以下只使用虛構帳戶、主機與路徑:
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_claude
ssh-copy-id -i ~/.ssh/id_ed25519_claude.pub devnode@mac-lab.example
若遠端 Mac 沒有 ssh-copy-id,可透過既有登入方式,把公鑰追加到遠端帳戶的 ~/.ssh/authorized_keys。接著在本地工作站加入 SSH 別名:
Host claude-mac-lab
HostName mac-lab.example
User devnode
IdentityFile ~/.ssh/id_ed25519_claude
IdentitiesOnly yes
ServerAliveInterval 30
首次連線時,先核對主機指紋,再接受金鑰。不要因為遇到 REMOTE HOST IDENTIFICATION HAS CHANGED 就直接刪除 known_hosts;應先確認主機是否被重建、DNS 是否改變,或是否存在中間人風險。
完成後至少執行四項測試:
ssh claude-mac-lab 'whoami; pwd; echo $SHELL'
scp ./README.md claude-mac-lab:~/transfer-test/
ssh claude-mac-lab 'ls -l ~/transfer-test/README.md'
ssh claude-mac-lab 'exit'
ssh claude-mac-lab 'echo reconnect-ok'
這組測試分別確認帳戶、路徑、Shell、SFTP/檔案傳輸和重連。若只看到一次登入畫面,不代表 SSH 基礎鏈路已可供 CI 或長時間工作使用。
需要建立更完整的 遠端 Mac SSH 安全基線 時,應同步檢查帳戶撤銷、金鑰輪替、主機指紋與管理者存取紀錄。
第二階段:安裝 Claude Code,分開處理互動與自動化認證
SSH 登入後,進入受控工作目錄,再安裝 Claude Code:
mkdir -p ~/workspaces/claude-lab
cd ~/workspaces/claude-lab
npm install -g @anthropic-ai/claude-code
claude doctor
claude --version
官方文件明確指出,不應使用 sudo npm install -g,因為這可能造成權限錯誤及不必要的安全風險。
個人互動使用與自動化認證必須分開:
- 互動式工作:執行
claude,依提示完成登入。SSH 終端無法開啟本地瀏覽器時,可在具備瀏覽器的工作站完成 OAuth 流程,再依官方指示處理遠端登入。 - 腳本或 CI 工作:不要依賴人工瀏覽器回呼。可按官方認證文件使用適合自動化的環境變數、短期憑據助手或 OAuth Token。
- macOS 憑據邊界:官方文件指出,macOS 上的認證憑據會儲存在加密的 macOS Keychain。這不等於所有程式都能安全讀取,也不代表可把憑據複製到其他帳戶。
若同時存在多種認證來源,實際採用哪一種會影響排錯。環境變數、雲端供應商憑據和訂閱 OAuth 可能有優先順序差異;遇到登入成功但請求失敗,應用 /status 或診斷命令確認目前使用的認證來源。
注意: 絕不要把 API Key、OAuth Token、簽名憑證或 Keychain 匯出內容放進 Git、Shell 歷史、CI 日誌或螢幕截圖。遠端 Mac 交付給其他人前,也要先撤銷不再使用的憑據。
第三階段:初始化專案,先讓非互動 Shell 找得到工具
取得程式碼時,先使用獨立工作目錄,不要直接把 Claude Code 指向整個家目錄:
cd ~/workspaces
git clone git@example.invalid:team/sample-ios-app.git sample-ios-app
cd sample-ios-app
git config user.name "Example Developer"
git config user.email "developer@example.invalid"
git status
接著檢查工具是否在 SSH 非互動 Shell 中可用:
command -v git
command -v xcodebuild
command -v xcrun
xcodebuild -version
xcrun simctl list devices
這一步很容易被忽略。圖形介面終端可能載入完整的 Zsh 設定,但 SSH 非互動 Shell 的 PATH 不一定相同。若 xcodebuild 在本地終端可用、在 Claude Code 工作階段找不到,問題通常是 Shell 初始化檔案或 Xcode 工具路徑,而不是 AI 代理本身。
在專案中建立 CLAUDE.md,只寫可驗證的工作規則,例如:
# Project Rules
- 只修改 Sources/ 與 Tests/。
- 測試命令為:xcodebuild test -scheme SampleApp
- 不讀取 .env、簽名憑證、Keychain 匯出檔。
- 不執行部署、發布或刪除磁碟命令。
- 每次修改後先展示差異,再執行測試。
Claude Code 會從專案目錄和 ~/.claude 載入 CLAUDE.md、設定及其他規則;專案級設定適合放入版本控制,個人設定則應留在本地檔案。設定檔與 CLAUDE.md 說明
第一個任務不要直接要求大規模重構。選一個可以回滾的小任務,例如修正一個測試、增加一個輸入驗證,然後確認 Claude Code 能讀取檔案、修改程式、執行測試並產生可審查的 Git diff。
第四階段:用權限和沙箱,而不是只靠提示詞
Claude Code 的權限規則可分為 allow、ask 和 deny。官方設定採用工具或工具加條件的格式,例如 Bash(npm test)、Read(./.env) 或 WebFetch(domain:example.com);規則評估時,拒絕規則應優先保護敏感資源。官方權限參考
可在 .claude/settings.json 放入專案級起點:
{
"permissions": {
"allow": [
"Read(./Sources/**)",
"Read(./Tests/**)",
"Bash(xcodebuild test *)"
],
"ask": [
"Bash(git commit *)",
"Bash(npm install *)"
],
"deny": [
"Read(./.env)",
"Read(./certificates/**)",
"Bash(rm -rf *)"
]
},
"sandbox": {
"enabled": true,
"failIfUnavailable": true,
"filesystem": {
"denyRead": ["~/.ssh", "~/.aws", "~/Library/Keychains"],
"allowRead": ["."]
}
}
}
這不是可直接套用到所有專案的完整政策。~/Library/Keychains、簽名資料夾和雲端憑據路徑,應依實際帳戶與工具鏈調整。重點是把三件事分開:
- 權限規則阻止 Claude Code 嘗試使用不應接觸的工具或檔案。
- 沙箱在作業系統層限制 Bash 及其子程序的檔案與網路範圍。
- Git、Keychain、CI Secret 和生產設定仍需由平台層管理,不能只交給 Claude Code。
沙箱預設可限制目前工作目錄的寫入範圍,也能透過 allowWrite、denyRead 和允許網域進一步調整。官方文件指出,若沙箱無法啟動,預設可能顯示警告後改以未沙箱模式執行;對受控環境而言,應評估是否將 sandbox.failIfUnavailable 設為 true,令安全條件不成立時直接失敗。
最後執行三組負面測試:
claude
# 嘗試讀取 .env,預期被拒絕或要求確認
# 嘗試修改專案外檔案,預期被沙箱阻擋
# 嘗試執行刪除或發布命令,預期被 deny 或 ask 攔截
若所有命令都能直接執行,先不要把節點交付給團隊。這通常表示規則檔未被載入、設定來源不正確,或工作階段啟用了過寬的權限模式。
第五階段:處理斷線、重啟和長時間工作
需要長時間執行的任務,應在 SSH 內啟動 tmux:
tmux new -s claude-work
cd ~/workspaces/sample-ios-app
claude
離開終端時使用 Ctrl-b、d,重新登入後執行:
tmux attach -t claude-work
git status
git diff --stat
Claude Code 官方終端文件指出,tmux 可能讓 Shift+Enter 換行、桌面通知和進度列出現異常。需要這些功能時,可在 ~/.tmux.conf 加入以下設定,再重新載入:
set -g allow-passthrough on
set -s extended-keys on
set -as terminal-features 'xterm*:extkeys'
參考 tmux 與終端設定文件。若 Mac 重新啟動,tmux 工作階段會消失,不能把 tmux 當成完整的工作佇列或持久化服務。真正的長任務仍應具備可重跑腳本、Git checkpoint 和輸出日誌。
上線前的方案取捨與驗收表
遠端 Mac、Linux 雲端主機和本地 Mac 的差別,不在於哪個方案「最快」,而在於專案是否需要真實 macOS 能力,以及是否需要持續在線。
| 決策維度 | 遠端 Mac | Linux 雲端主機 | 本地 Mac |
|---|---|---|---|
| Xcode 與 Simulator | 可直接使用真實 macOS 工具鏈 | 通常不適合作為主要方案 | 可直接使用 |
| SSH 與長時間任務 | 適合,需搭配獨立帳戶與 tmux | 適合 | 需自行維持開機與網路 |
| Keychain/簽名流程 | 可按帳戶和權限隔離 | 需額外繞路或改造 | 最接近個人工作流程 |
| 團隊回收與替換 | 可按節點週期管理 | 較容易標準化 | 需處理硬體交接 |
| 主要限制 | 受網路延遲、頻寬和遠端管理政策影響 | 缺少 macOS 專屬工具鏈 | 前期硬體成本與維護責任較高 |
| 適合對象 | 臨時測試、CI、跨系統開發、持續在線節點 | 純跨平台服務與一般後端工作 | 長期高負載且需要實體周邊的人員 |
正式交付前,至少應完成以下驗收:
- SSH 金鑰登入、主機指紋和指定帳戶均已確認。
claude doctor、版本檢查與認證狀態正常。- Git 身份、依賴管理器和 macOS 工具鏈在非互動 Shell 中可用。
- Claude Code 只能讀寫指定專案範圍。
.env、SSH 金鑰、Keychain、簽名資產和生產設定已被隔離。- 小型真實任務可以修改程式並通過測試。
- SSH 斷線後能透過 tmux 或明確的恢復流程繼續工作。
- Mac 重啟後,帳戶、工作目錄、依賴和認證恢復方式均有紀錄。
- 租期或專案結束時,可撤銷帳戶、清除憑據、歸檔變更並回收節點。
如果目前方案只是 Linux 主機加上虛擬化或不穩定的遠端轉接,常見缺點是 Xcode 相容性不足、Keychain 與簽名流程難以驗證、斷線後工作狀態不透明,以及權限邊界容易被管理者忽略。需要真實 macOS 工具鏈、短期測試環境或持續在線節點時,租用 ProxyMac 的遠端 Mac 會比先購買一台專用 Mac 更容易按週期調整。建議先用一個可回滾的小任務驗證 SSH、權限和編譯流程,再依使用週期參考 ProxyMac 的繁體中文方案說明。
常見疑問
沒有本地 Mac 可以遠端執行 Claude Code 嗎?
可以,但遠端主機必須是真實 macOS,並具備可用的 SSH、網路與使用者帳戶。若專案只需要一般程式編輯,Linux 也可能足夠;若涉及 Xcode、Simulator、Keychain 或簽名,遠端 Mac 才能提供接近交付環境的驗證結果。
透過 SSH 登入 Mac 後,如何完成 Claude Code 認證?
互動工作可在 SSH 終端啟動 claude,並依官方 OAuth 流程完成登入。若遠端終端沒有瀏覽器,應使用具備瀏覽器的工作站完成授權,或為自動化工作選擇官方支援的非互動認證方式,不要把 Token 直接貼進命令列。
Claude Code 在遠端 Mac 上如何限制檔案和命令權限?
以專案級 .claude/settings.json 管理 allow、ask、deny,並啟用沙箱限制 Bash 的檔案系統與網路範圍。敏感檔案應先加入拒絕規則,再用負面測試確認讀取、修改和越界命令真的會被阻擋。
SSH 斷開後,Claude Code 會話怎麼恢復?
互動工作可放在 tmux 中,SSH 重新登入後使用 tmux attach 恢復。Mac 重啟不會保留原有 tmux 工作階段,因此長時間任務還需要 Git checkpoint、可重跑腳本和日誌。恢復後先檢查 git status,再決定是否繼續執行。
遠端 Mac 執行 Claude Code 上線前要檢查什麼?
要檢查 SSH 重連、主機指紋、認證來源、非互動 Shell 的工具路徑、專案級權限、沙箱失效策略、敏感檔案阻擋、測試命令和斷線恢復。若任何一項只能靠人工記憶,這個節點仍不適合交付給團隊。