在VPS上运行Claude Code:安装、安全加固与会话持久化

2 分钟阅读·Matthieu|

在远程Linux服务器上配置Claude Code,包括无头认证、tmux会话持久化和安全加固。每条命令均经过验证。

在VPS上运行Claude Code

Claude Code是一个基于终端的AI编程代理。它读取你的代码库、编辑文件、执行命令,并根据自然语言描述构建功能。在VPS上运行它,你就拥有了一个7×24小时运行的持久编程代理,可以从任何设备通过SSH访问。

本指南将带你从一台全新的Ubuntu VPS开始,完成Claude Code的安装和会话持久化配置。每个步骤都包含验证命令,确保操作成功。

Claude Code对VPS有什么要求?

Claude Code将你的提示发送到Anthropic的服务器进行推理。你的VPS只需存储项目文件、开发工具和Claude Code进程本身。因此不需要GPU或高端硬件。

要求 最低配置 推荐配置
操作系统 Ubuntu 20.04 LTS Ubuntu 24.04 LTS
内存 4 GB 8 GB
磁盘 20 GB SSD 40 GB NVMe
CPU 2 vCPUs 4 vCPUs
网络 稳定的互联网连接 低延迟连接
依赖 无(原生安装器) git、ripgrep(已内置)

原生安装器内置ripgrep,不需要Node.js等运行时依赖。4 GB的VPS可以运行Claude Code和中等规模的代码库。如果你使用大型monorepo或运行其他服务,建议选择8 GB。

账户要求: Claude Code需要Claude Pro、Max、Teams、Enterprise或Console账户。Claude.ai免费计划不包含Claude Code访问权限。

安装Claude Code之前如何加固VPS?

在安装任何东西之前先锁定你的服务器。VPS上线后几分钟内就会遭到自动化暴力破解攻击。以下步骤创建非root用户、强制SSH密钥认证、配置防火墙并启用自动安全更新。

如果你已经有一台加固过的服务器,可以跳到如何在Linux服务器上安装Claude Code?。关于每个安全步骤的详细说明,请参阅。

创建非root用户

以root身份SSH登录服务器,然后创建一个拥有sudo权限的用户:

ssh root@YOUR_SERVER_IP
adduser claude
usermod -aG sudo claude

将SSH密钥复制到新用户,这样就可以免密码登录:

mkdir -p /home/claude/.ssh
cp /root/.ssh/authorized_keys /home/claude/.ssh/authorized_keys
chown -R claude:claude /home/claude/.ssh
chmod 700 /home/claude/.ssh
chmod 600 /home/claude/.ssh/authorized_keys

在继续操作之前,从另一个终端验证你能以新用户身份登录。不要关闭root会话:

ssh claude@YOUR_SERVER_IP

你应该看到claude@yourserver的shell提示符。如果成功,继续下一步。

禁用密码认证

编辑SSH配置以阻止基于密码的登录:

sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config

重启SSH并验证设置已生效:

sudo systemctl restart ssh
sudo sshd -T | grep -E 'passwordauthentication|permitrootlogin'

预期输出(顺序可能不同):

permitrootlogin no
passwordauthentication no

配置防火墙

UFW(Uncomplicated Firewall)会阻止所有入站流量,除了你明确允许的。在某些精简VPS镜像上,可能需要先用sudo apt install -y ufw安装。

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw enable

验证规则:

sudo ufw status

预期输出:

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

安装fail2ban

fail2ban在SSH登录多次失败后封禁对应IP地址:

sudo apt update && sudo apt install -y fail2ban

创建本地配置文件,使你的设置在软件包更新后仍然有效:

sudo tee /etc/fail2ban/jail.local > /dev/null << 'EOF'
[sshd]
enabled = true
port = ssh
filter = sshd
maxretry = 5
bantime = 3600
findtime = 600
EOF

启用并验证:

sudo systemctl enable --now fail2ban
sudo systemctl status fail2ban

注意看:输出应显示active (running)enable --now标志让fail2ban立即启动,且在重启后自动运行。

sudo fail2ban-client status sshd

这会显示jail处于活动状态,当前封禁IP数为0(全新安装时正常)。

启用自动安全更新

Unattended-upgrades无需人工干预即可修补安全漏洞:

sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

提示时选择"Yes"。验证是否已激活:

sudo systemctl status unattended-upgrades

输出应显示active (running)

如何在Linux服务器上安装Claude Code?

原生安装器是推荐方法。它不需要任何依赖,在后台自动更新,支持所有受支持的Linux发行版。npm安装方式已弃用。

以非root用户身份运行安装器(不要用root):

curl -fsSL https://claude.ai/install.sh | bash

这是Anthropic官方安装器。如果你想在执行前先验证,可以查看安装文档获取SHA256校验和及代码签名详情。

安装器将二进制文件放置在~/.local/bin/claude并添加到PATH。打开新shell或source你的profile以生效:

source ~/.bashrc

验证安装:

claude --version

你应该看到类似2.x.x的版本号。运行内置诊断检查配置:

claude doctor

这会检查系统配置、网络连接和认证状态。此时认证会显示为未完成,这是正常的。

如何在无头VPS上认证Claude Code?

Claude Code通常会打开浏览器窗口进行OAuth登录。在没有图形界面的无头服务器上,需要使用其他方法。根据你的账户类型有两个选项。

选项A:从Claude Console获取API密钥

如果你有Claude Console账户(基于API计费),设置ANTHROPIC_API_KEY环境变量。这是无头服务器最简单的方法。

在console.anthropic.com生成API密钥,然后安全地存储在VPS上:

sudo mkdir -p /etc/claude-code
sudo tee /etc/claude-code/env > /dev/null << 'EOF'
ANTHROPIC_API_KEY=sk-ant-api03-your-key-here
EOF
sudo chmod 600 /etc/claude-code/env
sudo chown claude:claude /etc/claude-code/env

说明:创建一个权限受限的专用文件(只有你的用户可以读取),而不是把密钥放在.bashrc中(那里会出现在shell历史记录中,且可被其他进程读取)。

在shell profile中加载它。将这行添加到~/.bashrc

echo 'set -a; source /etc/claude-code/env; set +a' >> ~/.bashrc
source ~/.bashrc

验证密钥已加载:

echo $ANTHROPIC_API_KEY | head -c 15

你应该看到sk-ant-api03-xx(密钥的前15个字符)。

选项B:从Claude订阅获取OAuth令牌

如果你使用Claude Pro或Max订阅(不是Console),在有浏览器的机器上生成OAuth令牌,然后传输到VPS。

在你的本地机器(有浏览器的那台)上:

claude setup-token

这会打开浏览器进行OAuth认证,并输出一个以sk-ant-oat01-开头的长期令牌。令牌有效期为一年。

复制令牌,然后在你的VPS上以相同方式存储:

sudo tee /etc/claude-code/env > /dev/null << 'EOF'
CLAUDE_CODE_OAUTH_TOKEN=sk-ant-oat01-your-token-here
EOF
sudo chmod 600 /etc/claude-code/env
sudo chown claude:claude /etc/claude-code/env

还需要创建~/.claude.json以跳过引导向导:

cat > ~/.claude.json << 'EOF'
{
  "hasCompletedOnboarding": true
}
EOF
chmod 600 ~/.claude.json

在shell profile中加载:

echo 'set -a; source /etc/claude-code/env; set +a' >> ~/.bashrc
source ~/.bashrc

验证认证

测试Claude Code能否连接到Anthropic服务器:

claude -p "Say hello in exactly 5 words"

-p标志执行单次提示,不进入交互模式。如果你看到一个五个单词的问候语,说明认证成功。如果出现认证错误,用env | grep -E 'ANTHROPIC_API_KEY|CLAUDE_CODE_OAUTH_TOKEN'检查环境变量是否正确设置。

SSH断开后如何保持Claude Code运行?

使用tmux。它创建的终端会话在服务器上独立于SSH连接持续运行。合上笔记本电脑,飞到另一个国家,用手机SSH连回来。会话还在那里,完全保持你离开时的状态。

安装tmux

sudo apt install -y tmux

验证:

tmux -V

为Claude Code配置tmux

创建一个.tmux.conf,包含针对长时间编程会话优化的设置:

cat > ~/.tmux.conf << 'EOF'
# Increase scrollback buffer (default is 2000 lines)
set -g history-limit 50000

# Enable mouse support for scrolling and pane selection
set -g mouse on

# Start window numbering at 1
set -g base-index 1

# Reduce escape time for faster key response
set -sg escape-time 10

# Status bar with session name and time
set -g status-right '%H:%M %d-%b'

# Keep sessions alive if the shell exits unexpectedly
set -g remain-on-exit on
EOF

启动Claude Code会话

创建一个命名的tmux会话并在其中启动Claude Code:

tmux new -s claude

你现在在名为"claude"的tmux会话中。启动Claude Code:

cd ~/your-project
claude

Claude Code正在运行。要分离会话(让它在后台继续运行),按:

Ctrl+B,然后 D

你回到了普通的SSH提示符。Claude Code在tmux中继续运行。

tmux快速参考

操作 命令
创建命名会话 tmux new -s claude
分离会话 Ctrl+B,然后D
列出会话 tmux ls
重新连接会话 tmux attach -t claude
终止会话 tmux kill-session -t claude
向上滚动 Ctrl+B,然后[,然后方向键
退出滚动模式 q

如何从其他设备重新连接Claude Code会话?

从任何设备SSH到你的VPS并重新连接:

ssh claude@YOUR_SERVER_IP
tmux attach -t claude

你的Claude Code会话完全保持离开时的状态。对话历史、文件上下文和正在运行的任务都保留着。这适用于笔记本电脑、手机(使用Termius等SSH应用)或其他服务器。

如果会话崩溃或被终止,tmux attach会失败。启动一个新会话:

tmux ls

如果没有列出任何会话,用tmux new -s claude创建一个新的。

如何限制Claude Code在服务器上的操作?

Claude Code有一个权限系统来控制它能使用哪些工具。默认情况下,它在执行bash命令或编辑文件前会请求确认。你可以通过项目目录中的.claude/settings.json预先批准安全命令并阻止危险命令。

永远不要在生产服务器上使用--dangerously-skip-permissions。它会绕过所有安全提示,让Claude Code不经询问就执行任何命令。

设置权限白名单

创建项目级配置文件:

cd ~/your-project
mkdir -p .claude
cat > .claude/settings.json << 'EOF'
{
  "permissions": {
    "allow": [
      "Bash(npm run *)",
      "Bash(npm test *)",
      "Bash(git status)",
      "Bash(git diff *)",
      "Bash(git log *)",
      "Bash(git add *)",
      "Bash(git commit *)",
      "Bash(ls *)",
      "Bash(cat *)",
      "Read",
      "Bash(grep *)"
    ],
    "deny": [
      "Bash(rm -rf *)",
      "Bash(git push --force *)",
      "Bash(chmod 777 *)",
      "Bash(curl * | bash)",
      "Read(./.env)",
      "Read(./.env.*)"
    ]
  }
}
EOF

说明:allow数组让Claude Code无需每次询问即可执行这些命令。deny数组完全阻止危险命令。规则遵循deny优先原则:如果一个命令同时匹配allowdeny,deny生效。

验证文件已正确创建:

ls -la .claude/settings.json

文件应该对你的用户可读。由于此文件会提交到git,它适用于所有克隆项目的人。对于个人覆盖设置,使用.claude/settings.local.json(自动被gitignore)。

如何监控VPS资源?

Claude Code在4 GB VPS上正常运行时使用200-400 MB内存。大型项目或多个并发任务会增加内存消耗。设置swap空间可以防止内存不足导致进程被杀。

添加swap空间

检查是否已存在swap:

sudo swapon --show

如果输出为空,创建一个2 GB的swap文件:

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

将其添加到/etc/fstab使其在重启后持续生效:

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

验证:

free -h

你应该看到swap空间已列出。注意看:找到Swap:行,显示2.0Gi总量。

检查资源使用情况

在Claude Code运行时监控内存和CPU:

htop

如果htop未安装:sudo apt install -y htop。观察内存条。Claude Code应保持在200-400 MB左右。如果持续达到总RAM的80%以上,考虑升级VPS或关闭其他服务。

检查磁盘使用:

df -h /

Claude Code本身占用极少磁盘空间。项目文件和git历史才是主要消耗者。

在VPS上运行Claude Code需要多少费用?

Claude Code使用你现有的Claude订阅运行,无需额外费用。每月总成本是VPS加上Claude计划。

VPS规格 月费用 Claude计划 计划费用 总计
2 vCPU,4 GB RAM ~$5-10 Pro $20/月 $25-30/月
4 vCPU,8 GB RAM ~$10-20 Max $100/月 $110-120/月
4 vCPU,8 GB RAM ~$10-20 Console (API) 按token计费 $10-20 + 用量

Pro计划包含有限的Claude Code使用量。Max计划有更高的速率限制,适合重度使用。Console(API)按token计费,适合需要精细成本控制的团队。

对于全天候运行的持久编程代理,4 GB VPS + Pro计划约$25/月是入门方案。

遇到问题了?

Claude Code无法认证

检查环境变量是否已设置:

env | grep -E 'ANTHROPIC_API_KEY|CLAUDE_CODE_OAUTH_TOKEN'

如果为空,重新加载profile:source ~/.bashrc。如果变量已设置但认证仍然失败,验证密钥是否有效。OAuth令牌一年后过期。API密钥可以从Console撤销。

tmux会话消失

服务器重启时tmux会话会丢失。重启后启动新会话:

tmux new -s claude

检查服务器是否最近重启过:

uptime

Claude Code运行缓慢或无响应

检查可用内存:

free -h

如果RAM接近满载且swap使用量很高,Claude Code会变慢。终止未使用的进程或升级VPS。同时检查到Anthropic服务器的网络延迟:

curl -o /dev/null -s -w '%{time_total}\n' https://api.anthropic.com

1秒以内属于正常。更高的值说明你的VPS和Anthropic之间存在网络问题。

权限被拒绝错误

如果Claude Code无法读写文件,检查文件所有权:

ls -la ~/your-project

文件应属于你的用户(如果你按照本指南操作,应为claude:claude)。修复所有权:

sudo chown -R claude:claude ~/your-project

查看日志获取更多信息:

journalctl -u ssh -f

这会实时显示SSH相关日志。对排查连接问题很有用。

Copyright 2026 Virtua.Cloud. All rights reserved.

准备好亲自尝试了吗?

几秒内部署您自己的服务器。支持 Linux、Windows 或 FreeBSD。

查看 VPS 方案