部署
在 VPS 上运行 Claude Code
一台常开的小服务器能把 Claude Code 从你的笔记本上搬走,在你不干活的时候让它继续工作。下面这套部署搭起来快、放着跑也安全,还给其他编程智能体留好了位置。
简要回答
租一台至少 4 GB 内存的 Linux VPS,创建一个非 root 用户,并把 SSH 改为仅允许密钥登录。然后用 curl -fsSL https://claude.ai/install.sh | bash 安装 Claude Code(无需 Node.js),再用 claude auth login 登录,通过 SSH 把验证码粘贴回去。用 tmux、Remote Control 或 Maude 这类会话守护进程让会话保持运行。
把 Claude Code 放到服务器上而不是笔记本上运行,有三个好处:笔记本合上时它照样工作;连接断了它也不受影响;而且智能体跑在一台随时可以扔掉的机器上,而不是存着你 SSH 密钥和浏览器配置的那台。本指南介绍的部署方式,在一台全新的 Debian 或 Ubuntu 服务器上大约需要十五分钟。同样的步骤稍作调整也适用于 Alpine 和 Fedora。
你需要一个包含 Claude Code 的 Claude 套餐:Pro、Max、Team 或 Enterprise,或者一个 Console 账号。免费的 claude.ai 套餐不包含它。用订阅登录,就不用管理 API 密钥,也没有额外的用量计费。
1. 选一台服务器
Anthropic 的系统要求写的是4 GB 或以上内存,以及 x64 或 ARM64 处理器。支持的 Linux 系统有 Ubuntu 20.04+、Debian 10+ 和 Alpine 3.19+。实际上,起决定作用的更多是你项目的工具链,而不是 CLI 本身:
- 4 GB:文档给出的最低配置,在中小型项目上跑一个会话没问题。
- 8 GB:如果你要构建较重的东西(打包工具、测试套件、一两个容器),或同时运行多个会话。
- 16 GB:如果你要并行运行多个智能体,或者旁边还跑着数据库。
Hetzner、DigitalOcean、Scaleway、OVH、Vultr 等都可以,桌子底下的旧电脑也行。如果你会在上面的终端里打字,就选离你近的地区。ARM 实例通常每 GB 最便宜,Claude Code 也能在上面原生运行。我们的编程智能体 VPS 指南对比了各家服务商和配置。
2. 创建非 root 用户
很多 VPS 镜像默认用 root 登录。不要用 root 运行智能体,那会让任何失误都波及整个系统。而且 Claude Code 以 root 身份运行时拒绝以 bypass 模式启动,所以你迟早都需要一个普通用户。在 Debian 或 Ubuntu 上:
adduser dev
usermod -aG sudo dev
rsync --archive --chown=dev:dev ~/.ssh /home/dev
在 Fedora 上,管理员组是 wheel 而不是 sudo。在 Alpine 上,要先安装 sudo 或 doas。最后一行会复制你当前登录用的密钥,这样在锁定任何东西之前,你就能以 dev 身份重新连接。关闭第一个终端之前,先在第二个终端里测试一下。把自己锁在一台全新 VPS 外面几乎是人人都会踩的坑,能躲就躲。
3. SSH 密钥与安全加固
如果你还在用密码登录,先换成密钥。在你的电脑上用 ssh-keygen -t ed25519 生成一个,再用 ssh-copy-id dev@your-server 复制上去。密钥登录可用后,编辑 /etc/ssh/sshd_config:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
然后重启 SSH:在 Debian 和 Ubuntu 上运行 sudo systemctl restart ssh。在 Fedora 上,该服务名为 sshd,所以要运行 sudo systemctl restart sshd。想更进一步,可以加上 fail2ban 和一个只放行 SSH 的防火墙。如果这台机器根本不需要暴露在公网上,就把它放进 Tailscale 网络。你的手机加入同一个网络,就能直接访问它。
用手机操作:SSH 应用可以在设备上生成密钥,并显示公钥部分,让你粘贴到 ~/.ssh/authorized_keys 里。Maude 会替你完成这一步:它的“设置密钥登录”按钮会通过你已登录的连接创建一个密钥,安装公钥、测试新密钥,并且只把私钥保存在手机的钥匙串中。
4. 安装 Claude Code
Anthropic 现在推荐使用原生安装器,它不需要 Node.js。用你的普通用户运行,不要加 sudo:
curl -fsSL https://claude.ai/install.sh | bash
claude --version
claude doctor
它会把启动程序放在 ~/.local/bin/claude,并在后台自动更新。claude doctor 无需启动会话就能检查安装和设置。还有一些替代方式,都来自安装文档:
- 经过签名的 apt、dnf 和 apk 软件源,适合想让系统包管理器来管理它的人。这些不会自动更新,要随系统其他部分一起升级。
- npm 依然可用(
npm install -g @anthropic-ai/claude-code,需要 Node.js 22 或更高版本),装的是同一个原生二进制文件。Anthropic 不建议使用sudo npm install -g。 - Alpine 需要
bash、curl、libgcc、libstdc++和ripgrep,并在设置中加上USE_BUILTIN_RIPGREP=0。
如果某篇旧教程让你先装 Node,现在可以跳过这一步了。
5. 无浏览器登录
运行 claude(或 claude auth login)并按提示操作。VPS 上没有浏览器,所以你要在其他任意设备上打开登录链接。Claude Code 允许你按 c 复制链接。在那台设备上登录。当浏览器连不上 Claude Code 的本地回调时(通过 SSH 时这很正常),它会改为显示一个验证码。把它粘贴到 Paste code here if prompted 这一行,服务器上的登录就完成了。
凭据保存在 ~/.claude/.credentials.json,权限为 0600。请相应地对待这台服务器:任何以该用户身份拿到 shell 的人,都能使用你的 Claude 订阅。对于脚本和 CI,还有 claude setup-token,它会输出一个有效期一年的令牌,供你设置为 CLAUDE_CODE_OAUTH_TOKEN。根据认证文档,这个令牌只能发起模型请求,不能启动 Remote Control 会话。
6. 让它保持运行
在 SSH 会话前台启动的任何东西,都会随连接一起断掉。常见的解决办法是 tmux:
sudo apt install tmux
tmux new -s work
# start claude, then detach with Ctrl-B then D
tmux attach -t work
你可以断开、掉线、几小时后再连回来重新接入,会话完好无损。不过 tmux 扛不住重启。重启后,claude --continue 会接上该目录下最近的一次对话。我们的合上笔记本后让 Claude Code 继续运行指南介绍了其他方案,包括 systemd 和会话守护进程。
7. 同一台服务器,更多智能体
能跑 Claude Code 的服务器,也能同时跑其他编程智能体。每个都安装在你的主目录里,各自保存登录状态,互不干扰。按同时运行的数量给每个智能体预留内存。
| 智能体 | 安装 | 无浏览器登录 |
|---|---|---|
| Codex(OpenAI) | npm install -g @openai/codex | codex login --device-auth(需先在 ChatGPT 安全设置中开启设备码登录)或 API 密钥 |
| OpenCode | curl -fsSL https://opencode.ai/install | bash | 在 TUI 中运行 /connect,然后粘贴服务商密钥 |
| Grok Build(xAI) | curl -fsSL https://x.ai/cli/install.sh | bash | 首次启动时在浏览器登录,或使用 XAI_API_KEY |
Antigravity CLI(Google,agy) | curl -fsSL https://antigravity.google/cli/install.sh | bash | 通过 SSH 时会输出一个链接,你再把验证码粘贴回去;或设置 GEMINI_API_KEY |
来源:Codex 认证、OpenCode 文档、Grok Build 文档、Antigravity CLI 安装,核实于 2026 年 10 月。Codex 和 Antigravity 有各自的详细教程:在 VPS 上运行 Codex CLI和在服务器上运行 Antigravity CLI。Gemini CLI 已不再支持个人 Google 账号,Antigravity CLI 是 Google 推出的替代品。
8. 用手机访问
有三种方式,从最需要亲自动手的到最省事的:
SSH 应用 + tmux。用 Termius、Blink 或其他任何客户端接入你的 tmux 会话。免费、功能完整,但你得用软键盘操作一个全屏终端。这里是两者的对比。
Remote Control。在 tmux 中启动 claude remote-control,然后在 Claude 应用的 Code 标签页里打开会话。Pro、Max、Team 和 Enterprise 套餐都包含它。Anthropic 的文档恰好建议在这种场景下使用 tmux 或 screen。它只支持 Claude,会话弹出的权限请求会发到手机上,由你来回应。应用无法把会话切换到 Auto 或 Bypass permissions。
Maude。Maude 替你完成第 4 步和第 6 步,第 5 步则改到你的手机上进行。添加服务器的方式有三种:输入地址、粘贴一条 ssh … 命令,或者扫描 curl -fsSL https://maude.pilotdev.fr/setup | sh 生成的二维码。如果你以 root 登录,一个按钮就能替你创建第 2 步中的非 root 用户。随后 Maude 会通过 SSH 部署自己的守护进程,并以我们测试并锁定的版本安装每个智能体。你可以在手机上登录 Claude、Codex 或其他任何智能体。关闭应用后会话仍在服务器上运行;服务器会主动连接 Maude 的中继,所以在 NAT 后面、不开放端口也能用。
9. 决定权限
接下来是有意思的问题:你允许它在无人值守时做多少事?一台可以重建的服务器正是放宽权限的合适地方——前提是你真的把它当成了一次性的。Claude Code 的 auto 模式会由一个分类器批准安全的操作,能填补很大一部分空白。完全绕过权限有它自己的规则,包括第 2 步提到的 root 限制。这些单独写在一篇文章里:安全地以完整权限运行 Claude Code。
把服务器配置成丢了也只是麻烦、而不是严重损失的样子。经常把工作推送到远程仓库,不要在上面存放别处没有的机密信息,并假设你随时可能重建它。做到这一点后,上面的每个决定都会变得更容易。
用手机运行
服务器准备好后,在手机上用 Claude Code 会介绍 Maude 如何操控它。如果 Claude 不是你唯一的智能体,可以从智能体总览开始。
常见问题
Claude Code 需要多少内存?
能在没有浏览器的服务器上登录 Claude Code 吗?
claude 或 claude auth login,在任意设备上打开它给出的链接并登录。通过 SSH 时,浏览器通常不会跳转回来,而是显示一个验证码;把它粘贴到终端的提示处即可。对于非交互式脚本,claude setup-token 会生成一个长期有效的令牌,但它不能启动 Remote Control 会话。应该用 root 运行吗?
多个智能体能共用一台 VPS 吗?
还需要 Node.js 吗?
更新内容
- — 安装方式改为 Anthropic 的原生安装器(不再需要 Node.js);内存建议与文档中 4 GB 的最低要求保持一致;新增无浏览器登录的粘贴验证码流程和 setup-token;新增在同一台服务器上运行 Codex、OpenCode、Grok Build 和 Antigravity 的章节。
- — 首次发布。