将备用Mac设为Claude Code专用控制机的完整指南
本文提供了一份分步指南,教你如何将一台闲置Mac配置为始终在线的独立环境,让Claude Code(含computer use)完全接管。如此一来,你可以通过手机上的Claude App或主Mac的SSH远程向它下达任务,从而避免在主工作机上运行高权限Agent带来的安全风险。
为什么选择物理备用Mac而非容器?
容器虽然方便,但仍运行在主机上,网络流量并未真正隔离;此外,部分仅支持macOS的应用(如Unity)无法在容器中运行,也无法实现computer use所需的点击、拖拽等GUI操作。因此,使用一台独立的旧Mac,并为其创建一个无Apple ID、无个人数据的全新本地管理员账户,是更安全且功能更完整的方案。
核心配置流程
1. 系统初始化与账户隔离
- 如有旧数据,先抹掉Mac(Apple芯片:
系统设置 -> 通用 -> 传输或还原 -> 抹掉所有内容和设置;Intel Mac:进入恢复模式抹盘并重装)。
- 创建新的本地账户,不登录Apple ID。确保该账户具备管理员权限,以便执行
sudo。
2. 启用并配置SSH免密登录
- 目标机:
sudo systemsetup -setremotelogin on(若失败,需为终端授予“完全磁盘访问权限”)。
- 配置免密码sudo:创建
/etc/sudoers.d/<user>-nopasswd规则文件并校验语法,使Agent无需每次输入密码。
- 目标机通过
scutil --get LocalHostName获取本地主机名(建议使用<host>.local,而非易变的IP)。
- 源机生成SSH密钥后,使用
ssh-copy-id将公钥推送到目标机,实现无密码SSH。
3. 保持机器持续在线
4. 安装Claude Code及可选环境
- 通过SSH远程执行官方安装脚本。
- 将
~/.local/bin加入~/.zshenv(而非.zshrc),确保非交互式Shell也能找到。
- 可选运行
setup-claude-env.sh,可交互式地安装Shell别名、DX插件、GitHub CLI、Playwright MCP、yt-dlp等组件,且支持幂等重复执行。
5. 登录账号
- 交互式登录Anthropic和GitHub账户。建议为Agent单独注册一个GitHub账号,避免影响主账户。
进阶功能配置
剪贴板同步(clip.sh)
源机和目标机之间可通过SSH管道使用pbcopy/pbpaste实现加密点对点剪贴板同步,无需Apple ID或第三方服务。安装clip.sh后,设置环境变量IC_BOX,即可用clip send和clip get在两端互传文本或图片。
Computer Use(GUI控制)
macOS的屏幕录制和辅助功能权限与GUI登录会话绑定,SSH进程默认无法访问屏幕。解决方案是:通过LaunchAgent在目标机的GUI会话中维持一个固定socket的tmux服务器。运行setup-computer-use.sh可自动完成此配置。
- 在目标机上首次使用时,必须人工在系统设置中为
tmux授予“屏幕录制”和“辅助功能”权限(权限归属的是tmux进程而非claude本身)。
- 为避免反复弹出“访问其他App数据”的提示,建议同时授予
tmux完全磁盘访问权限。
- 权限变更后需重启tmux服务器(
tmux -S /tmp/cc-tmux.sock kill-server),LaunchAgent会自动重新拉起。
源机安装ic.sh后,可用ic命令快速在目标机上创建或附加tmux会话,支持多个并发会话。常用子命令包括:
ic:启动新Claude会话(默认带--dangerously-skip-permissions)
ic -c / ic -r:继续/恢复会话
ic sh:普通远程Shell
ic ls / ic kill <id>:列出/结束会话
ic rc:启动Remote Control服务器,支持手机控制
ic vnc:一键打开屏幕共享
浏览器自动化(Claude in Chrome)
macOS的computer use对浏览器有操作限制。安装Chrome扩展“Claude”后,Agent可获得完整的导航、点击、填表及读取控制台/网络请求能力。安装后需在Claude Code中执行/chrome启用,或通过ic --chrome启动。
手机远程控制
通过Claude App的Remote Control功能,可随时随地通过手机驱动目标机上的Claude Code会话。如果在目标机上完成了computer use配置,使用手机启动的会话同样具备GUI控制能力。
屏幕共享(VNC)
在目标机的“系统设置 -> 通用 -> 共享”中手动开启“屏幕共享”,即可从源机通过open vnc://<user>@<target-host>.local进行图形化远程接管。
跨网络远程访问(Tailscale)
.local地址仅限局域网。安装Tailscale后,两台设备可通过端到端加密的WireGuard隧道互联,SSH、ic、clip及屏幕共享均可从任何网络访问,无需暴露在公网。建议开启设备审批并为目标机禁用密钥过期,避免掉线。使用Tailscale后,IC_BOX地址去掉.local后缀即可。
注意事项
- 由于Screen Recording和Accessibility权限无法通过命令行或脚本自动授权,目标机首次配置computer use时必须有人工在本地或Screen Sharing中完成点击授权。
- 如果在源机的Chrome中也登录了同一Claude账户的扩展,Claude Code可能会连错浏览器。临时退出源机Chrome或卸载扩展可避免冲突。
- 通过手机Remote Control启动的会话目前暂不支持浏览器工具; workaround是先通过终端启动会话,再用手机
/rc接入。