首页 › tutorials › Claude Code远程开发全栈实战

概述

本教程系统讲解如何在远程服务器上运行Claude Code,涵盖SSH直连、Docker容器化、VPS部署、云GPU平台接入四大方案。学完后你将掌握从任意设备(笔记本、iPad、手机)安全地连接远程开发环境,利用tmux保持会话持久化,实现跨地域的AI辅助编程工作流。适合已有基础Claude Code使用经验、希望扩展到远程开发场景的开发者。

前置条件


第一章:为什么需要远程开发

1.1 本地开发的五大痛点

Claude Code在本地运行时存在几个结构性限制:

痛点 具体表现 远程方案的解决方式
会话中断 合上笔记本盖子、网络波动,上下文全部丢失 tmux保持服务端会话,断线不断任务
硬件限制 大型项目编译、测试耗尽本地资源 云服务器弹性扩展,按需分配算力
团队协作 同事无法复现你的开发环境 Docker镜像统一环境,一人配置全员复用
安全合规 代码不能离开企业网络 服务器在内网运行Claude Code,代码不外泄
移动办公 iPad/手机无法直接运行Claude Code SSH/tmux从任意设备接入

1.2 远程开发架构总览

graph TB
    subgraph "客户端设备"
        A[MacBook]
        B[iPad]
        C[手机]
        D[Chromebook]
    end

    subgraph "接入层"
        E[Tailscale VPN]
        F[SSH密钥认证]
        G[Cloudflare Tunnel]
    end

    subgraph "服务端环境"
        H[tmux会话管理]
        I[Claude Code CLI]
        J[项目代码仓库]
    end

    subgraph "基础设施"
        K[家庭服务器]
        L[VPS云主机]
        M[RunPod GPU云]
        N[Docker容器]
    end

    A --> E
    B --> E
    C --> F
    D --> G
    E --> H
    F --> H
    G --> H
    H --> I
    I --> J
    J --> K
    J --> L
    J --> M
    J --> N

第二章:方案一——SSH直连远程服务器

2.1 服务器端准备

首先在远程服务器上安装Claude Code。假设你的服务器是Ubuntu 22.04/24.04:

# 更新系统
sudo apt update && sudo apt upgrade -y

# 安装Node.js 20+(Claude Code的运行时)
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

# 验证版本
node --version  # 需要 >= 20.0.0
npm --version

# 安装Claude Code
npm install -g @anthropic-ai/claude-code

# 验证安装
claude --version

2.2 配置API认证

有两种认证方式可选:

方式A:API Key直接认证(适合个人/测试)

# 设置环境变量(写入shell配置文件持久化)
echo 'export ANTHROPIC_API_KEY="sk-ant-api03-xxxxx"' >> ~/.bashrc
source ~/.bashrc

# 启动Claude Code
claude

方式B:OAuth登录(推荐,更安全)

# 在本地机器完成OAuth认证后,将token复制到远程服务器
# 本地执行:
claude auth token

# 在远程服务器上:
claude auth login --token <your-token>

安全提醒:绝不要将API Key硬编码在脚本中或提交到Git仓库。使用环境变量或专用密钥管理工具。

2.3 SSH密钥免密登录

每次输入密码太繁琐,配置密钥认证:

# 本地机器生成密钥(如果还没有的话)
ssh-keygen -t ed25519 -C "claude-dev@remote" -f ~/.ssh/claude_remote

# 将公钥复制到远程服务器
ssh-copy-id -i ~/.ssh/claude_remote.pub user@your-server-ip

# 配置SSH config简化连接
cat >> ~/.ssh/config << 'EOF'
Host claude-dev
    HostName your-server-ip
    User your-username
    IdentityFile ~/.ssh/claude_remote
    ServerAliveInterval 60
    ServerAliveCountMax 3
    TCPKeepAlive yes
EOF

# 现在可以直接连接
ssh claude-dev

关键参数解释: - ServerAliveInterval 60:每60秒发送心跳包,防止连接被防火墙断开 - ServerAliveCountMax 3:3次心跳失败才判定断开 - TCPKeepAlive yes:启用TCP层保活

2.4 首次远程启动Claude Code

# SSH连接到服务器
ssh claude-dev

# 进入项目目录
cd ~/my-project

# 启动Claude Code
claude

# 验证远程运行状态——在另一个终端执行
ssh claude-dev "ps aux | grep claude"

2.5 常见问题排查

问题1:连接超时

# 检查服务器SSH服务状态
sudo systemctl status sshd

# 检查防火墙规则
sudo ufw status
sudo ufw allow 22/tcp

# 检查是否在监听
ss -tlnp | grep :22

问题2:Node.js版本不兼容

# 使用nvm管理Node版本
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
source ~/.bashrc
nvm install 20
nvm use 20

问题3:权限问题导致全局安装失败

# 避免使用sudo安装npm包
npm config set prefix ~/.npm-global
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
npm install -g @anthropic-ai/claude-code

第三章:tmux会话持久化——断线不断任务

3.1 为什么tmux是远程开发的核心

SSH直连有一个致命弱点:网络一断,Claude Code会话随之死亡,所有上下文清零。tmux(Terminal Multiplexer)在服务端创建虚拟终端,即使SSH断开,tmux中的进程继续运行。

sequenceDiagram
    participant L as 本地笔记本
    participant S as 远程服务器
    participant T as tmux会话
    participant C as Claude Code

    L->>S: SSH连接
    S->>T: tmux attach
    T->>C: 运行Claude Code

    Note over L: 合上笔记本盖子
    L--xS: SSH断开
    Note over T,C: tmux中的Claude Code继续运行

    Note over L: 打开笔记本
    L->>S: 重新SSH连接
    S->>T: tmux attach
    T-->>L: 恢复完整会话
    Note over L,C: 所有上下文完整保留

3.2 tmux安装与基础配置

# 安装tmux
sudo apt install -y tmux

# 创建优化配置文件
cat > ~/.tmux.conf << 'EOF'
# 前缀键改为Ctrl+a(比默认Ctrl+b更好按)
unbind C-b
set -g prefix C-a
bind C-a send-prefix

# 鼠标支持(可以滚动、点击切换面板)
set -g mouse on

# 256色支持(Claude Code的UI需要)
set -g default-terminal "screen-256color"

# 窗口编号从1开始
set -g base-index 1
setw -g pane-base-index 1

# 分屏快捷键
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"

# 快速重载配置
bind r source-file ~/.tmux.conf \; display "配置已重载"

# 状态栏显示会话名称
set -g status-right '#[fg=green]#S #[fg=yellow]%H:%M'
EOF

3.3 Claude Code专用tmux工作流

场景一:单项目专注模式

# SSH连接
ssh claude-dev

# 创建名为"myproject"的tmux会话
tmux new -s myproject -d

# 在会话中启动Claude Code
tmux send-keys -t myproject 'cd ~/my-project && claude' Enter

# 连接到会话(可随时断开)
tmux attach -t myproject

# 断开会话(不停止):按 Ctrl+a 然后按 d
# 重新连接:
tmux attach -t myproject

场景二:多项目并行开发

# 创建多个会话,每个项目一个
tmux new -s frontend -d
tmux new -s backend -d
tmux new -s infra -d

# 在每个会话中启动Claude Code
tmux send-keys -t frontend 'cd ~/frontend && claude' Enter
tmux send-keys -t backend 'cd ~/backend && claude' Enter
tmux send-keys -t infra 'cd ~/infra && claude' Enter

# 在会话之间切换
tmux switch -t frontend
tmux switch -t backend

# 列出所有会话
tmux ls

场景三:单会话多面板监控

# 创建会话
tmux new -s dev

# Ctrl+a 然后按 | 垂直分屏
# 左边运行Claude Code,右边运行测试
# 左面板
claude

# 切换到右面板(Ctrl+a 然后方向键)
# 右面板
npm test -- --watch

3.4 自动化启动脚本

创建一个脚本,一键启动完整的远程开发环境:

cat > ~/start-claude-dev.sh << 'SCRIPT'
#!/bin/bash
# Claude Code远程开发环境启动脚本

PROJECTS=("$HOME/project-api" "$HOME/project-web" "$HOME/project-infra")
SESSIONS=("api" "web" "infra")

# 创建tmux会话
for i in "${!SESSIONS[@]}"; do
    session="${SESSIONS[$i]}"
    project="${PROJECTS[$i]}"

    # 检查会话是否已存在
    if ! tmux has-session -t "$session" 2>/dev/null; then
        tmux new-session -d -s "$session" -c "$project"
        tmux send-keys -t "$session" 'claude' Enter
        echo "✓ 启动会话: $session -> $project"
    else
        echo "- 会话已存在: $session"
    fi
done

echo ""
echo "所有会话已就绪。连接方式:"
echo "  tmux attach -t api     # 连接API项目"
echo "  tmux attach -t web     # 连接Web项目"
echo "  tmux attach -t infra   # 连接基础设施项目"
echo "  tmux ls                # 查看所有会话"
SCRIPT

chmod +x ~/start-claude-dev.sh

3.5 远程Claude Code会话的监控

长时间运行的Claude Code任务(如大规模重构)需要监控:

# 创建监控面板
tmux new -s monitor -d

# 上半部分:查看Claude Code进程
tmux send-keys -t monitor 'watch -n 5 "ps aux | grep claude | grep -v grep"' Enter

# 分屏
tmux split-window -v -t monitor

# 下半部分:查看资源使用
tmux send-keys -t monitor 'htop' Enter

# 连接监控面板
tmux attach -t monitor

第四章:方案二——Docker容器化部署

4.1 为什么用Docker运行Claude Code

Docker方案的优势:

4.2 Dockerfile编写

# Dockerfile.claude-dev
FROM node:20-slim

# 安装系统依赖
RUN apt-get update && apt-get install -y \
    git \
    curl \
    tmux \
    vim \
    python3 \
    build-essential \
    && rm -rf /var/lib/apt/lists/*

# 安装Claude Code
RUN npm install -g @anthropic-ai/claude-code

# 创建非root用户(安全最佳实践)
RUN useradd -m -s /bin/bash claude-dev
USER claude-dev
WORKDIR /home/claude-dev/workspace

# 健康检查
HEALTHCHECK --interval=30s --timeout=10s --retries=3 \
    CMD which claude || exit 1

# 默认启动交互式shell
CMD ["/bin/bash"]

4.3 docker-compose配置

# docker-compose.yml
version: '3.8'

services:
  claude-dev:
    build:
      context: .
      dockerfile: Dockerfile.claude-dev
    container_name: claude-dev-env
    volumes:
      # 挂载项目代码(双向同步)
      - ./workspace:/home/claude-dev/workspace
      # 持久化Claude Code配置
      - claude-config:/home/claude-dev/.claude
    environment:
      - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
    # 资源限制
    deploy:
      resources:
        limits:
          cpus: '4'
          memory: 8G
    # SSH端口映射(远程访问用)
    ports:
      - "2222:22"
    # 保持容器运行
    stdin_open: true
    tty: true
    restart: unless-stopped

volumes:
  claude-config:

4.4 启动与使用

# 构建并启动
docker compose up -d --build

# 进入容器
docker exec -it claude-dev-env bash

# 在容器内启动Claude Code
claude

# 或者一行命令直接进入Claude Code
docker exec -it claude-dev-env claude

# 查看容器日志
docker compose logs -f claude-dev

# 停止(数据保留在volume中)
docker compose down

# 完全清理(包括数据)
docker compose down -v

4.5 通过SSH访问Docker容器

如果你需要从其他机器访问这个容器:

# 在容器内安装SSH服务
apt-get update && apt-get install -y openssh-server
echo "claude-dev:your-password" | chpasswd

# 启动SSH
service ssh start

# 从外部连接
ssh -p 2222 claude-dev@your-server-ip

4.6 常见Docker问题

问题:Claude Code无法访问Git仓库

# 挂载SSH密钥(只读)
# 在docker-compose.yml中添加:
volumes:
  - ~/.ssh:/home/claude-dev/.ssh:ro

# 或者使用Git credential helper
git config --global credential.helper store

问题:文件权限不匹配

# 确保容器内用户UID与宿主机匹配
# 修改Dockerfile:
ARG USER_ID=1000
ARG GROUP_ID=1000
RUN useradd -m -u ${USER_ID} -g ${GROUP_ID} claude-dev

第五章:方案三——VPS云主机部署

5.1 VPS选型建议

不同使用场景的VPS配置推荐:

场景 CPU 内存 存储 月费参考 推荐服务商
轻度编码/学习 1核 1GB 25GB SSD $5-10 DigitalOcean, Linode
中型项目开发 2核 4GB 50GB SSD $20-40 AWS Lightsail, Hetzner
大型项目/团队 4核+ 8GB+ 100GB+ SSD $40-80 AWS EC2, GCP Compute
GPU加速/ML 4核+ 16GB+ 200GB+ $0.5-2/小时 RunPod, Lambda Labs

5.2 一键VPS部署脚本

以下脚本可在全新的Ubuntu VPS上一键配置Claude Code远程开发环境:

#!/bin/bash
# deploy-claude-vps.sh — VPS一键部署Claude Code远程开发环境
# 用法:curl -fsSL <this-script-url> | bash

set -euo pipefail

echo "=== Claude Code VPS一键部署 ==="

# 1. 系统更新
echo "[1/7] 更新系统..."
sudo apt update && sudo apt upgrade -y

# 2. 安装基础工具
echo "[2/7] 安装基础工具..."
sudo apt install -y \
    git curl wget tmux htop \
    build-essential python3 \
    fail2ban ufw

# 3. 安装Node.js
echo "[3/7] 安装Node.js..."
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

# 4. 安装Claude Code
echo "[4/7] 安装Claude Code..."
npm install -g @anthropic-ai/claude-code

# 5. 配置防火墙
echo "[5/7] 配置防火墙..."
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp   # SSH
sudo ufw allow from 10.0.0.0/8  # 内网访问
sudo ufw --force enable

# 6. 配置fail2ban防暴力破解
echo "[6/7] 配置fail2ban..."
sudo tee /etc/fail2ban/jail.local > /dev/null << 'EOF'
[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600
EOF
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

# 7. 创建tmux启动脚本
echo "[7/7] 创建启动脚本..."
cat > ~/start-claude.sh << 'LAUNCH'
#!/bin/bash
SESSION="claude-$(date +%m%d)"
if ! tmux has-session -t "$SESSION" 2>/dev/null; then
    tmux new-session -d -s "$SESSION"
fi
tmux attach -t "$SESSION"
LAUNCH
chmod +x ~/start-claude.sh

echo ""
echo "=== 部署完成 ==="
echo "下一步:"
echo "  1. 设置API Key: export ANTHROPIC_API_KEY='your-key'"
echo "  2. 克隆项目: git clone <repo-url> ~/project"
echo "  3. 启动开发: ~/start-claude.sh"

5.3 安全加固清单

# 1. 禁用密码登录,只允许密钥认证
sudo sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo sed -i 's/#PubkeyAuthentication yes/PubkeyAuthentication yes/' /etc/ssh/sshd_config
sudo systemctl restart sshd

# 2. 更改SSH默认端口(减少扫描攻击)
sudo sed -i 's/Port 22/Port 2222/' /etc/ssh/sshd_config
sudo ufw allow 2222/tcp
sudo systemctl restart sshd
# 客户端SSH config也要更新端口

# 3. 创建专用开发用户(不用root)
sudo useradd -m -s /bin/bash claude-dev
sudo usermod -aG sudo claude-dev

# 4. 设置自动安全更新
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

第六章:方案四——云GPU平台接入

6.1 为什么在GPU云上运行Claude Code

当你的项目涉及机器学习、CUDA编译、GPU密集型计算时,本地机器力不从心。RunPod、Lambda Labs等GPU云平台提供按小时计费的GPU实例。

6.2 RunPod部署Claude Code

RunPod是目前最流行的GPU云平台之一,官方已提供Claude Code集成支持:

# Step 1: 在RunPod上创建Pod
# 选择模板:RunPod PyTorch 2.0+
# 选择GPU:RTX 4090或A100(根据需求)
# 开启SSH访问:Enable SSH

# Step 2: SSH连接到Pod
ssh root@<pod-ip> -p <port> -i <your-key>

# Step 3: 安装Claude Code
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt-get install -y nodejs
npm install -g @anthropic-ai/claude-code

# Step 4: 配置认证
export ANTHROPIC_API_KEY="sk-ant-xxxxx"

# Step 5: 启动tmux + Claude Code
tmux new -s gpu-dev
cd /workspace
claude

6.3 利用runclaude工具自动化管理

社区开发的runclaude工具可以让你从本地通过Claude Code直接操控RunPod:

# 安装runclaude
pip install runclaude

# 配置RunPod API Key
export RUNPOD_API_KEY="your-runpod-key"

# 通过Claude Code Skill自动创建和管理Pod
# 在Claude Code中输入:
# "Create a RunPod pod with RTX 4090, install PyTorch 2.1, and set up my ML project"

6.4 成本优化策略

GPU实例按小时计费,不使用时务必关机:

# 自动空闲检测脚本
cat > ~/idle-watchdog.sh << 'EOF'
#!/bin/bash
# 检测Claude Code空闲时间,自动通知(不自动关机,避免数据丢失)

IDLE_THRESHOLD=1800  # 30分钟(秒)
LOG_FILE="/var/log/claude-idle.log"

while true; do
    # 检查Claude Code进程
    if ! pgrep -f "claude" > /dev/null; then
        echo "$(date): Claude Code未运行" >> "$LOG_FILE"
    fi

    # 检查GPU利用率
    GPU_UTIL=$(nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader,nounits | head -1)
    if [ "$GPU_UTIL" -lt 5 ]; then
        echo "$(date): GPU空闲 ($GPU_UTIL%), 考虑关机节省成本" >> "$LOG_FILE"
    fi

    sleep 300  # 每5分钟检查一次
done
EOF
chmod +x ~/idle-watchdog.sh

第七章:网络接入方案对比

7.1 四种远程接入方式

远程开发的核心挑战是网络接入。以下是四种主流方案对比:

方案 安全性 配置难度 适用场景 延迟
SSH直连 中(需配置防火墙) 低 内网、固定IP 最低
Tailscale 高(WireGuard加密) 低 任意网络、多设备 低
Cloudflare Tunnel 高(企业级加密) 中 需要固定域名 中
Mosh 中 低 高延迟/不稳定网络 极低(预测输入)

7.2 Tailscale方案(推荐)

Tailscale基于WireGuard,零配置VPN,适合多设备远程开发:

# 服务器端安装
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up

# 本地机器安装
# macOS: brew install tailscale
# 或从App Store安装

# 验证连接
tailscale status

# 通过Tailscale IP连接(不再需要公网IP)
ssh [email protected]

配置完成后,你的手机、iPad、任何设备都能安全访问远程服务器,无需暴露SSH端口到公网。

7.3 Cloudflare Tunnel方案

适合需要固定域名访问的场景(如Web开发预览):

# 安装cloudflared
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg
echo "deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/cloudflared.list
sudo apt update && sudo apt install -y cloudflared

# 登录Cloudflare
cloudflared tunnel login

# 创建隧道
cloudflared tunnel create claude-dev
cloudflared tunnel route dns claude-dev dev.yourdomain.com

# 配置隧道
cat > ~/.cloudflared/config.yml << 'EOF'
tunnel: claude-dev
credentials-file: /home/you/.cloudflared/<tunnel-id>.json

ingress:
  - hostname: dev.yourdomain.com
    service: ssh://localhost:22
  - service: http_status:404
EOF

# 启动隧道
cloudflared tunnel run claude-dev

7.4 Mosh方案(适合不稳定网络)

Mosh(Mobile Shell)是SSH的替代品,在网络切换、高延迟环境下表现优异:

# 服务器端安装
sudo apt install -y mosh

# 客户端安装
# macOS: brew install mosh
# Ubuntu: sudo apt install mosh

# 连接(替代SSH)
mosh claude-dev

# 如果需要指定SSH端口
mosh --ssh="ssh -p 2222" claude-dev

Mosh的核心优势: - 网络切换时自动重连(从WiFi切换到4G无需手动操作) - 本地回显,高延迟下输入无卡顿 - 断开后会话状态完整保留


第八章:实战案例——完整的远程开发工作流

8.1 场景描述

假设你是一名远程开发者,需要在GPU服务器上运行Claude Code进行ML项目开发,同时从MacBook和iPad上切换工作。

8.2 完整配置流程

graph LR
    A[购买VPS/GPU云] --> B[安装系统依赖]
    B --> C[安装Claude Code]
    C --> D[配置Tailscale]
    D --> E[配置tmux]
    E --> F[部署项目代码]
    F --> G[编写CLAUDE.md]
    G --> H[启动远程开发]

    subgraph "日常使用流程"
        H --> I[SSH连接]
        I --> J[tmux attach]
        J --> K[继续Claude Code会话]
        K --> L[Ctrl+a d 断开]
        L --> I
    end

Step 1:服务器端完整配置

#!/bin/bash
# server-setup.sh

# 系统更新
sudo apt update && sudo apt upgrade -y

# 安装开发工具
sudo apt install -y git tmux mosh htop build-essential python3 python3-pip

# 安装Node.js + Claude Code
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
npm install -g @anthropic-ai/claude-code

# 安装Tailscale
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up

# 配置tmux
cat > ~/.tmux.conf << 'TMUX'
set -g prefix C-a
set -g mouse on
set -g default-terminal "screen-256color"
set -g base-index 1
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
TMUX

# 设置API Key(替换为你的真实Key)
echo 'export ANTHROPIC_API_KEY="sk-ant-xxxxx"' >> ~/.bashrc
source ~/.bashrc

# 克隆项目
git clone https://github.com/your-org/your-project.git ~/project
cd ~/project

# 创建项目级CLAUDE.md
cat > CLAUDE.md << 'CLAUDE'
# 项目:ML Pipeline

## 项目结构
- src/training/ — 模型训练代码
- src/inference/ — 推理服务
- tests/ — 单元测试
- notebooks/ — 实验笔记本

## 开发规则
- 所有新函数必须有docstring
- 使用Black格式化代码
- 提交前运行: pytest tests/
- GPU训练使用CUDA 12.1

## 常用命令
- 训练: python src/training/train.py --config config.yaml
- 测试: pytest tests/ -v
- 格式化: black src/ tests/
CLAUDE

echo "服务器配置完成!"

Step 2:创建持久化tmux会话

# 创建会话
tmux new -s ml-project -d

# 在会话中启动Claude Code
tmux send-keys -t ml-project 'cd ~/project && claude' Enter

Step 3:从MacBook连接

# 确保Tailscale已连接
tailscale status

# 获取服务器Tailscale IP(或使用MagicDNS名称)
# ssh user@your-server-name

# 通过Tailscale SSH连接并接入tmux
ssh user@ml-server 'tmux attach -t ml-project'

Step 4:从iPad连接

在iPad上使用Termius或Blink Shell应用:

# Termius/Blink Shell配置
Host: ml-server (Tailscale名称或IP)
User: your-username
Key: 导入SSH私钥

# 连接后执行
tmux attach -t ml-project

Step 5:日常开发循环

# 早晨:从MacBook开始工作
ssh user@ml-server
tmux attach -t ml-project
# ... 使用Claude Code开发 ...
# 合上笔记本(Ctrl+a d 或直接断开)

# 通勤中:从iPad继续
# 打开Termius -> 连接 -> tmux attach
# Claude Code会话完整保留,继续上次的工作

# 晚上:从手机紧急处理
mosh user@ml-server
tmux attach -t ml-project
# 处理完毕后断开

8.3 CLAUDE.md远程开发模板

针对远程开发场景的CLAUDE.md配置要点:

# 项目名

## 远程开发信息
- 服务器:ml-server (Tailscale)
- tmux会话:ml-project
- GPU:NVIDIA RTX 4090
- CUDA:12.1

## 项目结构
...

## 远程开发注意事项
- 长时间运行的任务使用tmux保持
- GPU训练任务用 nvidia-smi 监控
- 代码修改后自动运行测试验证
- 不要在/tmp目录存放重要文件(容器重启会丢失)

第九章:高级技巧与优化

9.1 Claude Code Remote Control功能

Anthropic在2025年推出了Remote Control功能,支持本地和远程会话的无缝切换:

# 本地启动会话
claude

# 在Claude Code内部使用remote-control
# 将当前会话移交到远程服务器继续
/remote-control ssh user@server --session current

# 会话状态完整保留:
# - 文件上下文
# - 对话历史
# - 工具状态
# - 工作目录

9.2 并行远程Agent编排

在一台服务器上同时运行多个Claude Code实例处理不同任务:

#!/bin/bash
# parallel-agents.sh — 并行启动多个Claude Code Agent

# 使用git worktree创建隔离的工作目录
REPO_ROOT="$HOME/my-project"
TASKS=("refactor-auth" "add-tests" "update-docs" "fix-logging")

for task in "${TASKS[@]}"; do
    # 为每个任务创建worktree
    cd "$REPO_ROOT"
    git worktree add "$HOME/worktrees/$task" -b "agent/$task" 2>/dev/null || true

    # 创建独立tmux会话
    tmux new-session -d -s "agent-$task" -c "$HOME/worktrees/$task"

    # 在会话中启动Claude Code并执行任务
    tmux send-keys -t "agent-$task" \
        "claude -p 'Work on task: $task. Follow CLAUDE.md rules. Make minimal, focused changes.'" \
        Enter

    echo "✓ Agent启动: $task"
done

echo "所有Agent已启动。监控命令:"
echo "  tmux ls                    # 查看所有会话"
echo "  tmux attach -t agent-refactor-auth  # 查看特定Agent"

9.3 Headless模式批量任务

在CI/CD或批处理场景中使用Claude Code的非交互模式:

# 非交互式执行单个任务
claude -p "Add error handling to all API endpoints in src/routes/" \
    --allowedTools "Edit,Read,Bash" \
    --output-format json > result.json

# 批量执行多个任务
cat > tasks.txt << 'EOF'
Refactor the authentication middleware to use JWT
Add unit tests for the payment module
Update all dependencies to latest stable versions
EOF

while IFS= read -r task; do
    echo "执行任务: $task"
    claude -p "$task" --allowedTools "Edit,Read,Bash,Glob,Grep"
    echo "---"
done < tasks.txt

9.4 资源监控与告警

# 创建监控脚本
cat > ~/claude-monitor.sh << 'MONITOR'
#!/bin/bash
ALERT_EMAIL="[email protected]"
CPU_THRESHOLD=90
MEM_THRESHOLD=85

check_resources() {
    local cpu_usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d. -f1)
    local mem_usage=$(free | grep Mem | awk '{printf("%.0f", $3/$2 * 100)}')

    if [ "$cpu_usage" -gt "$CPU_THRESHOLD" ] || [ "$mem_usage" -gt "$MEM_THRESHOLD" ]; then
        echo "⚠ 资源告警: CPU=${cpu_usage}%, MEM=${mem_usage}%"
        # 可以集成Slack/Discord通知
    fi

    # 检查Claude Code进程数
    local claude_count=$(pgrep -f "claude" | wc -l)
    echo "$(date): Claude进程数=$claude_count, CPU=${cpu_usage}%, MEM=${mem_usage}%"
}

while true; do
    check_resources
    sleep 60
done
MONITOR
chmod +x ~/claude-monitor.sh

第十章:方案选择决策矩阵

10.1 快速选择指南

graph TD
    A[需要远程开发?] --> B{有GPU需求?}
    B -->|是| C{训练还是推理?}
    B -->|否| D{团队还是个人?}

    C -->|训练| E[RunPod/Lambda GPU云]
    C -->|推理| F[VPS + Docker]

    D -->|团队| G[共享VPS + Docker]
    D -->|个人| H{在家还是外出?}

    H -->|在家| I[家庭服务器 + Tailscale]
    H -->|频繁外出| J[云VPS + Mosh + tmux]

    E --> K[tmux + nvidia-smi监控]
    F --> L[tmux + Claude Code]
    G --> M[Docker Compose + 共享镜像]
    I --> N[SSH + tmux]
    J --> O[Tailscale + tmux + mosh]

10.2 成本估算对比

方案 初始投入 月运营成本 优点 缺点
家庭服务器 $300-800(一次性) $10-20(电费) 数据隐私,无限使用 需要维护硬件
VPS云主机 $0 $5-80/月 弹性扩容,全球接入 长期成本累积
Docker容器 $0 包含在VPS费用中 环境一致,快速重建 需要Docker知识
GPU云 $0 $0.5-2/小时 按需使用GPU 忘记关机费用很高

延伸阅读

  1. Anthropic官方文档 — Claude Code Remote Development:code.claude.com/docs
  2. Docker官方Claude Code指南:docs.docker.com/ai/sandboxes/agents/claude-code
  3. Tailscale官方SSH配置教程:tailscale.com/kb/1152/ssh

参考来源

  1. Claude Code Best Practices: The Official and Community-Tested Guide for 2026 — Prompt Shelf综合最佳实践指南,涵盖远程开发配置
  2. Tmux + Claude Code SSH Persistent Session — tmux会话持久化完整教程,含配置文件和自动重连方案
  3. Running Claude Code in Docker: Because SSH is All You Need — Console Quest的Docker容器化Claude Code部署指南
  4. Claude Code Headless Mode: The Complete Self-Hosting Guide — amux.io的Headless模式深度教程,覆盖CI/CD和批量任务
  5. My Remote AI Dev Workflow: Claude Code + tmux + 4090 Server — Pedro Alonso的GPU服务器远程开发实战经验

训练营适用性评估

维度 评分
适用训练营 AI编程工具实战营、远程开发训练营、DevOps工程训练营
难度级别 中级(需Linux和SSH基础)
预计教学时长 6-8小时(含实操练习)
前置课程 Claude Code基础使用、Linux命令行基础
实验环境需求 每人一台VPS或共享服务器实例,Tailscale账号
可拆分模块 SSH方案(2h)+ Docker方案(2h)+ GPU云方案(2h)+ 综合实战(2h)

[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。

51学通信知识星球海报-扫码加入