Claude Code · 实操

在远程 Mac 上跑 Claude Code:连接、登录、长任务不被断

机器交付之后的第一小时,通常卡在三件事上:怎么连上去、怎么登录 Claude Code、长任务怎么不被断。这页按顺序给出可直接复制的做法。命令与登录流程以 Anthropic 与 Apple 的官方文档为准,版本更新后同样以官方为准。

第一步:连上去(Tailscale + SSH,或屏幕共享)

交付时我们会给你一个 Tailscale 组网邀请和机器的 SSH 地址。Tailscale 的好处是不用公网 IP、不用端口映射:机器在你自己的虚拟内网里,设备之间直连。

不用公网 IP 还有一个实际好处:机器不会暴露在扫描器里。公网端口一旦开出去,几天内就会有暴力破解尝试;组网方式下,只有你自己的设备能看到它。

装好客户端、登录同一个 tailnet,然后:

tailscale status            # 确认机器在线,记下 100.x.x.x 地址
ssh admin@100.x.x.x         # 首次连接问 yes,输入交付时给的密码

需要图形界面时用屏幕共享:Finder → 前往 → 连接服务器,输入 vnc://100.x.x.x:5900,或命令行执行 open vnc://100.x.x.x:5900。macOS 自带屏幕共享在 Tailscale 内网里通常比第三方远控更稳。没有 Tailscale 也能用 SSH 隧道或公网端口,但更依赖网络质量,也更难排障。

第二步:安装并登录 Claude Code

Claude Code 需要 Node.js 18 以上。机器交付时一般已经装好 Node 与 Claude Code,可以直接跳到登录。如果还没装:

如果 npm 报权限错误,先看是哪个 Node:装在 /usr/local 下的系统 Node 写全局目录需要 root,Homebrew 的 /opt/homebrew 不需要。别急着 sudo npm,改 npm prefix 更干净。

node -v                              # 确认 >= 18
npm i -g @anthropic-ai/claude-code   # 安装
claude --version                     # 验证

登录有两种常见方式:运行 claude 后按提示在浏览器里授权(把终端给出的链接复制到你本机浏览器,登录后把 code 粘回终端);或者已有 API Key 时设置环境变量 ANTHROPIC_API_KEY。两种方式都用你自己的账号登录,登录这一步由你完成。登录态保存在用户目录下,重连或重启通常不需要重新授权;换了系统用户则不共用,需要在新用户下再登录一次。

第三步:让长任务不被断

SSH 断线会杀死前台进程,这是「跑到一半没了」最常见的原因。用 tmux 把会话放到后台:断线只断你的连接,不断任务。

判断任务有没有真的在跑,看两个地方:tmux ls 里会话还在,以及你重定向出去的输出文件还在增长。屏幕共享窗口断开不等于任务结束,先看会话,再决定要不要重启。

tmux new -s cc          # 新建会话,在里面跑 claude
# 断线后重新连上:
tmux attach -t cc       # 回到原来的现场

另一个坑是休眠。macOS 在无人操作时会尝试休眠,长任务被挂起。用 caffeinate 阻止休眠:caffeinate -dimsu 放在后台,或者 caffeinate -i tmux new -d -s cc 'claude' 让 caffeinate 包住任务。建议把这条写进 LaunchAgent,机器重启后自动恢复;屏幕共享连接本身也会抑制休眠,但不要依赖它。

第四步:定时任务(launchd 或 cron)

需要每天固定时间跑一次的任务(日报、同步、批量处理),用 launchd 比 cron 更可靠:macOS 上不会因为休眠而错过执行。

两者的差别不在语法,在可靠性:cron 在机器休眠时错过的时间点不会补跑,launchd 会在唤醒后补一次。跑「必须每天有一次」的任务,用 launchd。示例 plist 放在 ~/Library/LaunchAgents/,文件名 com.easycc.job.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><dict>
  <key>Label</key><string>com.easycc.job</string>
  <key>ProgramArguments</key>
  <array>
    <string>/bin/zsh</string><string>-lc</string>
    <string>cd ~/work && claude -p "..." >> ~/logs/job.log 2>&1</string>
  </array>
  <key>StartCalendarInterval</key><dict>
    <key>Hour</key><integer>3</integer><key>Minute</key><integer>0</integer>
  </dict>
  <key>RunAtLoad</key><false/>
</dict></plist>

写好后执行 launchctl load -w ~/Library/LaunchAgents/com.easycc.job.plist。简单场景用 crontab -e 也行,但 cron 的 PATH 很短,node 与 npm 的路径要写全,脚本开头最好 source ~/.zshrc 或显式 export PATH。

三个最常见的坑

下面三条几乎每个新用户都会撞上一次,提前知道能省半小时。

  • PATH 不一致:SSH 非交互式登录不会加载 ~/.zshrc,npm 全局包装在 /opt/homebrew/bin 下,cron 里就找不到命令。脚本里写全路径,或显式 source。
  • npm 全局安装报 EACCES:系统 Node 装全局包会撞权限。用 Homebrew 或 nvm 装的 Node 一般不会;已经踩坑的,改 npm prefix,而不是 sudo npm。
  • 断线后进程消失:不是机器挂了,是前台进程跟着 SSH 会话一起结束。用 tmux 或 nohup,不要在裸 ssh 里跑长任务。

另外留意时区:机器在 UTC+5,你以为的凌晨 3 点可能是另一个时间。launchd 的 StartCalendarInterval 按机器本地时区走,脚本里打印一次 date 确认。

跑通之后:把环境固定下来

第一次连上、登录、跑完一个任务之后,建议顺手把几件事固定下来:把常用项目放在 ~/work 下并在 tmux 里保留一个常驻会话;把需要常驻的命令写进 LaunchAgent;日志统一放进 ~/logs,按天切分。这样机器重启、网络抖动、你临时换一台笔记本,都不影响已经在跑的工作。

还有一件容易被忽略的事:给磁盘留余量。Claude Code 的会话记录、构建产物、Xcode 的 DerivedData 都会持续增长,256 GB 的机器在重度使用下一两个月就会吃紧。定期清理 ~/Library/Developer/Xcode/DerivedData 和旧构建目录,比事后扩容便宜得多。

常见问题

连接与运行上的五个问题

一定要用 Tailscale 吗?
不一定。它只是最省事的一种:不需要公网 IP,不用改路由器。你也可以用 SSH 隧道、自己搭 WireGuard,或者让我们在交付时开放端口——后两种对网络质量更敏感,排障也更麻烦。
登录时浏览器在我本机,能完成吗?
能。终端给出的授权链接在你自己的浏览器里打开,登录后把回调 code 粘回终端即可。API Key 方式更简单,设置 ANTHROPIC_API_KEY 就能直接用。
机器重启后任务会继续吗?
tmux 会话随重启消失,需要重新 attach 或重建。要开机自动恢复,把启动命令写进 LaunchAgent,或者用交付时预置的启动脚本。
屏幕共享很卡怎么办?
先看延迟:中亚节点到国内通常在 78–145 ms,超过 200 ms 时屏幕共享会明显卡。日常操作优先用 SSH + 终端,只在需要图形界面时开屏幕共享,并把分辨率调低。
能把本地的 Claude Code 配置迁移过去吗?
可以。把本地的 ~/.claude 目录和项目里的配置文件传过去就行,注意不要带任何明文密钥;登录态不要复制,换机器重新登录一次更安全。

机器已经在手?连不上就看这里

交付凭证里有 Tailscale 邀请、SSH 地址和当前出口 IP。连接、登录、长任务三件事通常半小时内能跑通;卡住了直接找我们。

登记一台机器看常见问题
登记需求

说说你要什么,工作日内 12 小时回复

免费登记,不用付款,也不用给账号密码。填完我们会带着机型、城市和报价来找你。

不想填表?直接问

加微信或 Telegram,问价格、城市、交付时间,当场给你答复。

付款后 3–7 天交付,高峰期 7–15 天

Claude 是 Anthropic 的商标,EasyCC 为独立服务商,与 Anthropic 无关联。文中命令仅作示例,安装与登录流程以官方文档为准。

登记需求