这篇同时发在 𝕏 上:Anthropic 新政后,中国人如何使用上 Claude Code?【VPS 版】,这里是同一篇的全文,打不开 𝕏 的人和 agent 可以直接读这一页。
今天 𝕏 上和微信群里都在晒 Claude 账号被封或者 KYC 的截图。关于 Claude 对中国用户大面积封号,我早就断言过:长期来说,任何伪装、任何和 Anthropic 斗智斗勇的策略,都很难持续。Anthropic 拥有世界顶级的 AI,伪装出来的环境,总有一天会露出破绽。
与其「伪装成美国用户」,不如想办法让环境本身就是美国!一台真正位于美国的机器、美国出口 IP、美国时区,美卡支付,从注册到日常使用,全程都在这台机器上完成,不混用中国网络,也不来回切换代理。当然,同理,其他支持 Claude 的国家和地区,也是可以的。少一点伪装,多一点一致性,这才是更长期的方案。
总结一下就是:买一台放在 Claude 支持地区的 VPS,装好 Orca 和 Claude Code,把它当成远程服务器;你的 MacBook 和手机上的 Orca 通过 Tailscale 接入,用 Orca 的内置浏览器(这个功能很强,直接在 Orca 里面就能在 VPS 上面打开网页)直接在 VPS 上注册、登录 Claude,然后控制跑在 VPS 上的 Claude Code,7×24 小时在线。
怎么用这篇文章:把全文,或这个链接(有一些 agent 读不到 𝕏 上的文章内容)https://vps.appsail.dev/guide/china-claude-code-vps/index.html.md 发给你本机的任意一个 CLI agent:Codex、Claude Code、Gemini CLI 都行。对它说:「按这篇文章一步一步执行,每做完一步停下来向我汇报」。你一边读,它一边做。
需要你亲自做的:选定并购买 VPS、把 SSH 公钥放上去、点一次 Tailscale 授权、在 MacBook 上配对一次、注册并订阅 Claude、登录一次 Claude Code、手机上扫一次码。其余全部交给 CLI。
和上一篇的关系:上一篇用的是 Grok Bot 送的云电脑。它没有 systemd,还会自动更新、清空环境,IP 经常跳到中国,为此我写了看门狗、定时任务和两个长脚本。评论区问得最多的就是「IP 老变怎么办」「直接用 VPS 行不行」。行,而且简单得多:上一篇一半的坑在这里都不存在,Orca + Tailscale + Claude Code 三层的搭法不变。
我前后被 Claude 封过 7 个账号了,目前还有 3 个账号正在服役。
7 月我写了《Claude Code 最新反封号完全指南》,160 多万阅读,应该帮助了很多推友使用上了 Claude。那篇教大家把 Mac 和 iPhone 的时区改成台北,绕开 Claude Code 里按时区和代理地址做的检测。那一招当时管用,但本质上是在跟检测代码捉迷藏,还是在和 Anthropic 做对抗。所以这篇不教伪装,只教怎么把一台真机搭稳。
VPS 比 Grok Bot 多一个好处:出口 IP 是你独占的。Grok Bot 的出口是 Cloudflare 的共享地址,有人担心地址池被标记。
以前用 VPS 注册 Claude 有个麻烦:VPS 不带桌面,没有浏览器。要么装桌面开 VNC,要么让本机浏览器走代理,后者又把本机环境混了进来。Orca 的内置浏览器把这事解决了:把页面渲染位置改成 Server,网页就跑在 VPS 那一侧,用 VPS 的网络,画面传到你的电脑上。
先说清楚:这不是防封教程,我也不能保证这样就百分百不会被封。Anthropic 对可用地区有自己的条款,风险自己评估。这里只是讲怎么把环境搭稳,OK 开始吧。
MacBook(Orca 客户端)──┐
├── Tailscale 内网 ──▶ cc-vps:6768(orca serve,systemd 托管)
手机(Orca App)────────┘ ├─ Claude Code 会话(7×24 在线)
└─ 内置浏览器(Server 渲染)──▶ claude.ai
出口 = VPS 独占 IP
搭建一共五步,外加日常使用:
这一节写给执行这篇文章的 agent。人类读者扫一眼就行,知道它按什么规矩办事。
ssh-copy-id 时输入,不要发到对话里。orca serve。这台机器上一个 Orca 进程管着所有 Claude Code 会话。重启只能用 sudo systemctl restart orca-serve,严禁 pkill -f orca。需要重启时先说明原因,等用户同意。cc-vps,用户名默认 orca。第一步设主机名之前先问用户要不要自定义;换了名字,Tailscale 节点名、SSH 地址、--pairing-address 都要跟着换,前后一致。挑 VPS 的功课我整理成了一个页面:VPS Picks · 精选 Claude Code VPS,只收适合跑 Claude Code 的机器。每个套餐标了月价、回国线路、机房、库存、国内三网实测延迟、是否在 Claude 支持地区和退款政策。价格人工核实,库存和延迟每天自动更新。
读 https://vps.appsail.dev/(Markdown 版 https://vps.appsail.dev/index.html.md),先问我三个问题:我平时在哪些地方用(比如家里、公司),每个地方的宽带是电信、联通还是移动,可以多选;月预算上限多少美元;机房地区偏好。然后按这些条件筛出 2 到 3 台「主力机」:8 GB 内存、机房在 Claude 支持的地区(不要中国香港)、有货、能装 Debian 13。每台列出商家、套餐、月价、线路、我用的每个运营商的实测延迟、退款政策和购买链接。运营商不止一个时,优先推荐每个运营商延迟都不高的机器,不要只看其中一个。最后说明你推荐哪一台、为什么。
现在有货、国内三网平均延迟不超过 100ms 的 8G 主力机,按延迟从低到高排:
| 商家 | 套餐 | 配置 | 机房 | 月价 | 测试IP |
|---|---|---|---|---|---|
| V.PS | NRT EPYC Flow Gen 2(Performance,CTGNet) | 2 核 / 8G / 60GB NVMe | 东京 | $132.76 | 45.94.40.13 电信 55 · 联通 55 · 移动 67 ms |
| V.PS | SIN EPYC Enterprise(Performance,CTGNet) | 4 核 / 8G / 120GB NVMe | 新加坡 | $265.58 | 45.135.43.11 电信 65 · 联通 72 · 移动 68 ms |
| Jtti | SG CLOUD 4C8G 年付特惠 | 4 核 / 8G / 50GB | 新加坡 | $38.09 | 177.5.76.254 电信 66 · 联通 69 · 移动 74 ms |
| Jtti | JP CLOUD 4C8G 年付特惠 | 4 核 / 8G / 50GB | 东京 | $29.23 | 103.110.221.254 电信 76 · 联通 76 · 移动 66 ms |
| 华纳云 | 新加坡云 4C8G 年付 | 4 核 / 8G / 50GB | 新加坡 | $37.00 | 177.5.75.254 电信 73 · 联通 68 · 移动 79 ms |
| 搬瓦工 | 大阪 CN2 GIA 160G | 6 核 / 8G / 160GB SSD | 大阪 | $138.83 | 212.50.253.232 电信 65 · 联通 59 · 移动 106 ms |
| 华纳云 | 日本轻量云 4C8G 200M | 4 核 / 8G / 50GB | 东京 | $42.23 | 142.248.136.254 电信 88 · 联通 74 · 移动 73 ms |
| V.PS | KIX Edge Yellow(Edge KVM,IIJ) | 4 核 / 8G / 80GB NVMe | 大阪 | $40.28 | 103.88.44.26 电信 71 · 联通 84 · 移动 90 ms |
| HostKvm | 韩国 KR-Gold(海外 IP,含内地优化) | 4 核 / 8G / 80GB | 韩国 | $15.00 | 45.154.14.14 电信 65 · 联通 158 · 移动 72 ms |
ssh-copy-id root@<VPS 的 IP>本机还没有 SSH 密钥的话,先执行 ssh-keygen -t ed25519。不要在 agent 里执行这条命令,比如 Claude Code 的 !。那里没有终端,ssh 没法问你密码,会报 ssh_askpass: exec(): No such file or directory。实在不方便,就打开商家后台的网页控制台(VNC),用 root 登录,把公钥手动写进 /root/.ssh/authorized_keys。ssh root@<IP> 'cat /etc/os-release; nproc; free -g; uname -m',不用输密码就能连上;系统是 Debian 13,内存约 8 GB,架构 x86_64。SSH 到 root@<IP>,完成下面这些,每项做完检查一遍:
apt update && apt -y upgrade,装好 curl sudo ufw。timedatectl set-timezone <时区>;主机名默认设成 cc-vps:动手前先问我要不要自定义,我没意见就用 cc-vps,执行 hostnamectl set-hostname <主机名>。下文所有 cc-vps 都换成这个名字。~/.ssh/authorized_keys 复制给 orca,属主改成 orca;执行 loginctl enable-linger orca。curl -fsSL https://tailscale.com/install.sh | sh,然后执行 tailscale up --ssh --hostname=cc-vps,把它给出的登录链接发给我。tailscale up 会一直等到我授权才返回,所以放到后台跑,输出写进日志文件,再从日志里读登录链接。ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp
ufw allow in on tailscale0
ufw enablessh orca@cc-vps 能连上。tailscale up --force-reauth 重新拿一个。tailscale ip -4 返回 100.x.x.x;tailscale status 里这台机器的名字是 cc-vps,不是 cc-vps-1;loginctl show-user orca -p Linger 显示 Linger=yes;ssh orca@cc-vps 能连上,Mac 上 ping cc-vps 能通;sudo ufw status 显示默认拒绝入站,只放行 22/tcp 和 tailscale0;timedatectl 显示的时区和机房所在地一致。公网 22 端口可以等全部搭完、Tailscale SSH 用稳了再关(ufw delete allow 22/tcp)。关之前确认商家后台的控制台能用,万一 Tailscale 掉了还能救回来。
Orca 连远程机器有两种方式:一是让本地 Orca 通过 SSH 去连;二是在远程机器上跑一个 Remote Orca Server,再配对。本文用后一种,原因有两个:
和 Grok Bot 版最大的区别是:这里有 systemd。不用看门狗,也不用定时任务,一个 service 文件就够了。
在 cc-vps 上用 orca 用户:
mkdir -p ~/.orca && cd ~/.orca
curl -fL -o orca-linux.AppImage https://github.com/stablyai/orca/releases/latest/download/orca-linux.AppImage
chmod +x orca-linux.AppImage
rm -rf squashfs-root app && ./orca-linux.AppImage --appimage-extract | tail -1 && mv squashfs-root app
~/.orca/app/resources/bin/orca-ide --version/etc/systemd/system/orca-serve.service。用户名、主机名和本机不一致时,只改 User=、ExecStart= 里的路径和 --pairing-address。然后执行 sudo systemctl daemon-reload && sudo systemctl enable --now orca-serve。[Unit]
Description=Orca remote server (orca serve)
After=network-online.target tailscaled.service
Wants=network-online.target
[Service]
User=orca
WorkingDirectory=/home/orca
EnvironmentFile=-/etc/orca-serve.env
ExecStart=/home/orca/.orca/app/resources/bin/orca-ide serve --port 6768 --pairing-address cc-vps $ORCA_EXTRA
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target几点说明:
user@<uid>.service),启动日志会写 terminals survive an orcad restart: yes。前提是第一步给 orca 开了 linger。journalctl -u orca-serve 里翻到。journalctl -u orca-serve --no-pager | grep -o 'orca://pair?code=[A-Za-z0-9_-]*' | tail -1systemctl is-active orca-serve 是 active,systemctl is-enabled orca-serve 是 enabled;ss -ltn | grep ':6768 ' 有监听;journalctl -u orca-serve --no-pager | grep "Advertised endpoint" | tail -1 显示 ws://cc-vps:6768;这一步全程在 MacBook 的 Orca 里、连着 cc-vps 完成:浏览器用 Orca 的内置浏览器,终端用 Orca 里开在 cc-vps 上的终端。不要拿到本机的 Chrome 里去做。
在 Orca 的内置浏览器里打开 https://ipinfo.io,看到的 IP 必须是 VPS 的公网 IP,地区是机房所在地。如果显示的是你本机的 IP 或国内地区,立刻停下,说明网页没跑在 VPS 上:先看「Where pages render」是不是 Server (streamed),再把这个网页关掉重开。
检查出口要用 ipinfo.io 这类国外网站,不要用 ip138 这类国内的 IP 查询网站:本机开着代理的话,国内网站一般直连,查出来的是你本机的 IP。最稳的做法是检查前先关掉本机代理。
在内置浏览器里打开 claude.ai。Claude 没有单独的注册入口:填一个新邮箱,点 Continue,它会往邮箱发验证码,验证通过就直接建号;也可以用 Google 登录直接注册。用 Google 登录的话,Google 可能会发一封「有新设备登录」的提醒,这是正常的,登录的就是这台 VPS。
发给 CLI:用 orca 用户在 cc-vps 上以官方脚本安装 Claude Code:curl -fsSL https://claude.ai/install.sh | bash。确认 ~/.local/bin 在 PATH 里(~/.profile 和 ~/.bashrc 都要有),告诉我版本号。
免费账号用不了 Claude Code,至少要订 Pro。卡号和最后点 Subscribe 这两步自己来,不要交给 agent,也不要把卡号发到对话里。
支付推荐两家:
MWQK01J。注册后到这里登记。目前只有订阅用户才能申请实体卡,相当于花一二十美金买张卡。有个问题就是,VPS 上用不了 Apple Pay:内置浏览器跑在 Linux 上,付款页不会出现 Apple Pay。办法是让 iPhone 借 VPS 的网络出去,在 iPhone 上付款:
/etc/sysctl.d/99-tailscale.conf 并用 sysctl -p /etc/sysctl.d/99-tailscale.conf 生效),然后执行 tailscale set --advertise-exit-node。做完提醒我去后台批准。https://ipinfo.io,确认是 VPS 的 IP;再打开 claude.ai,登录同一个账号,用 Apple Pay 完成订阅。用无痕浏览,是为了不带上 Safari 之前在国内网络下留的登录状态和 Cookie。
下一篇就专门写这个:《订阅 Claude、ChatGPT 等顶级 AI 工具的 100 种支付方法》,敬请期待。
在 Orca 里给 cc-vps 上的项目新建一个 Claude Code 会话,按首次设置向导选 claude.ai 账号登录。点击终端里的授权链接,Orca 会提示在内置浏览器里打开,选它,不要选系统浏览器。在内置浏览器里登录、授权,再把授权码粘回终端。
在 Orca 里走一遍完整的首次设置向导,以后就不会再弹登录了。如果你是在命令行里用 claude auth login 登录的,之后在 Orca 里打开时可能还会弹一次向导,账号并没有掉:把 ~/.claude.json 里的 hasCompletedOnboarding 设为 true(改之前先备份)就行。
bash -lc 'command -v claude' 指向 ~/.local/bin/claude,claude --version 有输出;claude auth status 显示已登录,方式是 claude.ai 账号的订阅登录(不是 Console 的 API key),订阅类型是 Pro 或 Max;电脑端的配对链接和手机端的二维码不是同一种凭据,不能混用。拿电脑链接生成二维码给手机扫,会提示权限不足。手机要用加了 --mobile-pairing 启动时打印的码:
echo 'ORCA_EXTRA=--mobile-pairing' | sudo tee /etc/orca-serve.env
sudo systemctl restart orca-serve
journalctl -u orca-serve --no-pager -n 80sudo rm /etc/orca-serve.env && sudo systemctl restart orca-serve。最直接的是在 MacBook 或手机的 Orca 里操作。另一条路是让本机的 CLI agent 通过 SSH 调用 VPS 上的 orca 命令,替你看进度、催任务。
先运行 ssh orca@cc-vps orca agent-context,读懂 orca CLI 的用法。以后我让你查看或指挥 Claude Code,都通过 ssh orca@cc-vps orca ... 来做。用 orca worktree ps 看一下现在各个项目里 Claude Code 的状态,哪些在跑、哪些在等我。
常用的几组命令(参数以 orca <命令> --help 为准):
orca worktree ps:看所有项目里 agent 的概况;orca terminal list、orca terminal read:列出终端、读取输出;orca terminal send:给终端里的 agent 发指令;orca terminal wait --for tui-idle:等它干完;orca worktree create --name <名字> --agent claude:开一个新工作区。事先讲好哪些事要回来问你。在 Orca 里新开的 Claude Code 跑的是 --dangerously-skip-permissions,只有放在这种隔离的 VPS 上才合适。调研、起草、测试可以让 agent 自己跑完;发送、发布、花钱、改生产环境,必须回到自己手里。
可以不用。Orca 本身不依赖 Tailscale:可以用 SSH 方式直连,也可以让 orca serve --pairing-address 填公网地址。但 SSH 方式下电脑和手机不能连同一个会话;填公网地址的话,6768 要自己做 TLS 和访问控制。用 Tailscale,这个端口根本不出现在公网上,手机在外面也能连。
先看 VPS Picks 上你那个运营商的实测延迟,选回国线路对得上的:电信选 CN2 GIA,联通选 9929,移动选 CMIN2,怎么选见电信、联通、移动怎么选回国线路。日本、新加坡离得近,一台主力机通常就够;晚高峰卡了,再加一台同城的代理机做 SSH 跳板,网站上有现成的「主力机 + 代理机」组合,见国内怎么用 Claude Code。Tailscale 无法直连时会走中继,延迟会高一些。
git 报 Repository not found,是 VPS 上登录的 GitHub 账号没有这个仓库的权限。用有权限的账号执行 gh auth login,再执行 gh auth setup-git。
重新执行第二步的下载和解包命令,再运行 sudo systemctl restart orca-serve。挑没有任务在跑的时候做。
8 GB 起。我在 Grok Bot 那台 16 GB 的机器上开三四个项目的 Claude Code,会用到 12 GB 左右。项目多就上 16 GB。各地区有货的 8G 套餐按月价排,见Claude Code VPS 怎么选。
最省事的是 git:让 Claude Code 在云上提交、推送,本地拉取。想实时同步,可以在 tailnet 里跑 Syncthing。
想交流 Claude 的朋友可以加入 Asa 的 Claude 频道:discord.gg/eJ6yK7VSsa ,主要讨论 VPS、Claude 注册、支付、订阅、绑定问题,欢迎进群交流。对 Claude Code 云主机感兴趣的也可以加微信群,群满了就加我微信:AppSaildotdev。
原文发在 𝕏:x.com/app_sail/status/2120823853882434025,评论和转发都在那边。
测试 IP 是商家在这个机房、这条线路上公开的一台机器,买之前可以先 ping 它,看看自己家的网络连过去快不快。点 IP 会打开 itdog 的全国多节点 ping,能按省份和运营商细看。
线路指从中国大陆到机房这段网络走哪家运营商的哪张网。离国内越近、线路越好,SSH 和网页越不卡,晚高峰也更稳。
标签一种颜色对应一家运营商:红色电信、蓝色联通、绿色移动。深色是这家的精品线路,浅色是普通一档,灰框是没有优化的普通线路。
本站按商家自己写明的线路标注;商家页的「去程线路」是本站从国内 traceroute 测的去程,回程测不到。实际效果和你家的宽带运营商有关,买前可以用测试 IP 测一下。