1. Aplicaciones Claude y cuatro flujos remotos

Claude Code es el agente de programación de Anthropic: lee proyectos, edita archivos, ejecuta comandos y pruebas. Lo que muchos llaman Claude CLI es el mismo programa de línea de comandos, claude. Claude Desktop ofrece Chat, Cowork y Code; Code ya incluye Claude Code, así que no hace falta instalar la CLI aparte.

  • Ejecutar claude en un VPS por SSH: el motor y el proyecto quedan en el VPS mientras el texto aparece en tu terminal local.
  • Conectar Claude Desktop local a un entorno SSH: la interfaz gráfica queda local mientras el motor Claude Code corre en el VPS.
  • Usar Remote Control: un proceso Claude Code sigue corriendo en el VPS mientras lo diriges desde otro ordenador, teléfono o navegador.
  • Usar Cloud Session: la tarea corre en infraestructura gestionada por Anthropic, no en tu VPS.
  • Usar escritorio remoto completo solo cuando haga falta: RDP en Windows, Screen Sharing en macOS, RDP/X2Go/VNC en Linux. No instales un GUI entero solo para evitar la CLI.

2. Rutas de datos: sincronizar sesión no es sincronizar archivos

  • SSH y CLI: el VPS lee y edita archivos y ejecuta comandos; tu ordenador muestra la salida del terminal, pero los archivos no se sincronizan automáticamente.
  • Desktop local con SSH: la app local muestra conversaciones, permisos y diffs mientras el VPS ejecuta Claude Code, Git y comandos del proyecto. Los archivos remotos siguen principalmente en el VPS.
  • Remote Control: el VPS ejecuta código y accede a archivos mientras conversaciones y actividad de herramientas viajan por la API de Anthropic a tus otros dispositivos.
  • Mientras Remote Control está conectado, la transcripción se guarda en servidores de Anthropic para sincronizar; ejecución y acceso al sistema de archivos siguen en el VPS.
  • Remote Control no es un enlace P2P directo ni sincronización completa de disco; recuperar archivos de verdad sigue requiriendo Git, SCP o rsync.

3. Preparar el VPS y asegurar el acceso

  • Los requisitos actuales de Claude Code incluyen 4 GB o más de RAM, x64 o ARM64, acceso HTTPS y un país o región admitidos. La inferencia del modelo ocurre en la nube, así que no hace falta GPU.
  • Crea una cuenta sin privilegios separada para cada usuario y no ejecutes Claude como root; usa claves SSH y restringe autenticación por contraseña e IPs de origen.
  • No expongas puertos extra de Claude, VNC, RDP o servidores de desarrollo; Remote Control solo necesita HTTPS saliente.
  • Guarda proyectos en directorios propiedad de un usuario sin privilegios; el proceso remoto tiene exactamente los permisos del usuario SSH.
  • En la primera conexión verifica la huella del host mediante la consola del VPS u otro canal confiable; no pongas StrictHostKeyChecking no.
# Inspeccionar el host Linux
cat /etc/os-release
uname -m
free -h
df -h "$HOME"

# Entrada local de ~/.ssh/config tras verificar la clave del host
Host vps-claude
  HostName 203.0.113.10
  User dev
  Port 22
  IdentityFile ~/.ssh/id_ed25519
  IdentitiesOnly yes
  StrictHostKeyChecking yes
  ServerAliveInterval 60
  ServerAliveCountMax 3

# Probar la conexión
ssh vps-claude

4. Instalar Claude Code en un VPS Linux

  • Ubuntu/Debian: instala curl, ca-certificates, git y tmux antes de ejecutar el instalador nativo oficial.
  • Fedora/RHEL: usa dnf para las mismas herramientas; si tmux no está en repositorios habilitados, usa un repositorio aprobado o screen en lugar de un binario desconocido.
  • Alpine: musl necesita bash, curl, libgcc, libstdc++ y ripgrep, y USE_BUILTIN_RIPGREP debe ser 0.
  • Para producción Anthropic también publica repositorios apt, dnf y apk firmados; verifica la huella oficial antes de confiar.
# Ubuntu / Debian
sudo apt update
sudo apt install -y curl ca-certificates git tmux

# Fedora / RHEL: sudo dnf install -y curl ca-certificates git tmux

# Instalador nativo oficial (también funciona en macOS y WSL)
curl -fsSL https://claude.ai/install.sh | bash

# Abre una terminal nueva y verifica
claude --version
claude doctor

# Si no encuentra el comando
export PATH="$HOME/.local/bin:$PATH"
claude --version

# Ruta absoluta para SSH no interactivo
~/.local/bin/claude --version

# Dependencias adicionales de Alpine
apk add bash curl libgcc libstdc++ ripgrep git tmux

5. Windows Server y hosts macOS remotos

  • Claude Code CLI admite Windows Server 2019 y posteriores. En PowerShell de usuario normal ejecuta irm https://claude.ai/install.ps1 | iex y luego verifica con claude --version y claude doctor.
  • Que la CLI admita Windows Server no implica que todas las funciones gráficas de Claude Desktop admitan ese SO; prefiere la CLI para trabajo solo de servidor.
  • Para conectar Desktop local a un host Windows, instala Microsoft OpenSSH Server y verifica SFTP y el comportamiento del proceso remoto.
  • En macOS usa el mismo instalador nativo o brew install --cask claude-code; un Mac remoto puede usarse directamente por SSH o como host para el entorno SSH del Desktop local.

6. Acceso y credenciales en un VPS sin navegador

  • Inicia claude en el directorio del proyecto y copia la URL de acceso en un navegador de tu ordenador para autorizarla.
  • Si el navegador no puede alcanzar el callback del VPS, muestra un código de acceso; pégalo en la terminal del VPS en Paste code here if prompted.
  • Usa /status para inspeccionar autenticación, /logout para salir y /login para autenticarte otra vez. Claude Code requiere Pro, Max, Team, Enterprise o Console; el plan gratis de claude.ai no lo incluye.
  • ANTHROPIC_API_KEY y una suscripción Claude son rutas distintas de autenticación y facturación; no pongas claves reales en repositorios, Dockerfiles, capturas ni historial de shell.
  • claude setup-token está pensado para CI y scripts; el token puede hacer solicitudes al modelo pero no crea Remote Control ni accede a conectores claude.ai.
  • Las credenciales Linux suelen guardarse en ~/.claude/.credentials.json con modo 0600; no subas ni sincronices ese archivo públicamente.
# Lee una API key interactivamente en Bash para que no entre en el historial
read -rsp "Anthropic API key: " ANTHROPIC_API_KEY; echo
export ANTHROPIC_API_KEY
claude

# Comprueba metadatos de credenciales sin leer el secreto
stat -c '%a %U %n' ~/.claude/.credentials.json

7. Mantener viva la sesión con tmux

  • Crea una sesión con tmux new -s claude-vps.
  • Entra al proyecto y ejecuta claude dentro de tmux.
  • Pulsa Ctrl+B y luego D para desconectarte dejando el proceso corriendo.
  • Vuelve con tmux attach -t claude-vps y lista sesiones con tmux ls.
  • Para un resultado único guardado en tu ordenador, ejecuta claude -p por SSH no interactivo y redirige la salida.
tmux new -s claude-vps
cd /srv/my-project
claude

# Vuelve más tarde
tmux attach -t claude-vps
tmux ls

# Ejecuta un resumen en el VPS y guárdalo localmente
ssh vps-claude 'cd /srv/my-project && ~/.local/bin/claude -p "Summarize this project"' > ./project-summary.md

8. Controlar el VPS con Remote Control

Remote Control crea solo conexiones HTTPS salientes y no abre puerto entrante. Las transcripciones viajan por servidores de Anthropic y se guardan ahí para sincronizar, mientras código y archivos quedan en el VPS. Los adjuntos pueden subirse al VPS, normalmente en ~/.claude/uploads/, pero los archivos generados del proyecto aún necesitan Git, SCP o rsync para recuperarse.

  • Remote Control requiere suscripción Pro, Max, Team o Enterprise y un /login completo de claude.ai. Claves API, setup-token, Bedrock, Vertex, Foundry y algunas URLs base de API personalizadas no son compatibles.
  • El VPS debe seguir encendido y el proceso claude debe seguir corriendo; una organización también puede desactivar la función.
  • CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC y DISABLE_GROWTHBOOK pueden hacerla no disponible. Si una clave API anula la suscripción, quítala y ejecuta /login otra vez.
  • Usa claude remote-control para modo servidor, claude --remote-control "VPS Project" para conservar interacción local o /remote-control dentro de una sesión existente.
  • Tras la confirmación única, la terminal muestra URL de sesión y código QR. Abre claude.ai/code o usa la app Claude con la misma cuenta y organización.
  • Para sesiones concurrentes que no deben editar el mismo directorio, considera --spawn worktree.
tmux new -s claude-remote
cd /srv/my-project

# Modo servidor
claude remote-control

# Worktrees independientes para sesiones concurrentes
claude remote-control --spawn worktree

# Conserva interacción en la terminal del VPS y permite otros dispositivos
claude --remote-control "VPS Project"

9. Mejor flujo gráfico: Claude Desktop local con SSH

Desktop transmite respuestas, salida de herramientas, permisos y diffs a tu ordenador, pero ediciones y operaciones Git quedan en el VPS. Las tareas largas también dependen de renovación de credenciales, reinicios del VPS, KillUserProcesses, actualizaciones del ayudante y herramientas solo en línea. Si tu ordenador debe apagarse, prefiere Cloud Session en lugar de suponer que Desktop SSH funcionará toda la noche con fiabilidad.

  • Instala la app oficial Claude Desktop en tu ordenador, inicia sesión y abre Code. Hay compilaciones para macOS, Windows y Ubuntu/Debian Linux beta; no hacen falta Node.js ni CLI aparte.
  • Abre el selector de entorno → New environment → SSH → Add SSH connection….
  • Introduce Name, SSH host (user@hostname o un Host de ~/.ssh/config), SSH port, una ruta opcional a clave privada local y una Worktree folder opcional.
  • Selecciona la carpeta remota del proyecto y pulsa Create environment. En la primera conexión Desktop instala motor y ayudante bajo ~/.claude/remote/ sin sudo.
  • Cada usuario que conecta necesita unos 1 GB libres y un directorio home escribible y ejecutable que no esté montado con noexec.
  • El host necesita SSH con SFTP, shell funcional, acceso de red, Git para funciones Git y varias sesiones por conexión; MaxSessions 1 causa fallos.
# Configuración de bastión en ~/.ssh/config
Host devbox
  HostName devbox.internal.example.com
  User dev
  ProxyJump bastion.example.com

# Introduce devbox como SSH host en Desktop
# El comportamiento del cliente Windows difiere; revisa los requisitos de system-openssh para ProxyJump

# Prueba SFTP por separado
sftp vps-claude

10. Ejecutar Claude Desktop dentro de un GUI remoto

  • Claude Desktop en Linux está en beta y requiere Ubuntu 22.04+ o Debian 12+, x86_64 o arm64, escritorio gráfico y keyring disponible; estos requisitos difieren de la CLI.
  • No ejecutes claude-desktop como root; un keyring bloqueado puede impedir conservar el inicio de sesión.
  • Cowork además requiere QEMU, KVM, /dev/kvm y virtualización relacionada. Muchas plataformas VPS no admiten virtualización anidada, así que usa Code o la CLI.
  • En un host Windows gráfico instala e inicia sesión mediante RDP protegido; no expongas RDP 3389 a todo Internet.
  • En un Mac remoto usa Screen Sharing y protege VNC 5900 con VPN o túnel SSH en lugar de exponerlo públicamente.
# Añade el repositorio oficial de Claude Desktop en Ubuntu / Debian
sudo curl -fsSLo /usr/share/keyrings/claude-desktop-archive-keyring.asc   https://downloads.claude.ai/claude-desktop/key.asc

gpg --show-keys /usr/share/keyrings/claude-desktop-archive-keyring.asc
# Huella: 31DDDE24DDFAB679F42D7BD2BAA929FF1A7ECACE

echo "deb [arch=amd64,arm64 signed-by=/usr/share/keyrings/claude-desktop-archive-keyring.asc] https://downloads.claude.ai/claude-desktop/apt/stable stable main"   | sudo tee /etc/apt/sources.list.d/claude-desktop.list

sudo apt update
sudo apt install claude-desktop
claude-desktop

# Tuneliza VNC remoto a la máquina local; no expongas el puerto 5900
ssh -L 127.0.0.1:5900:127.0.0.1:5900 vps-claude

11. Traer conversaciones, archivos y vistas previas a tu ordenador

  • Para archivos de texto pequeños, léelos por SSH y redirige la salida a un archivo local.
  • Usa scp para subidas y descargas individuales y rsync para sincronizar directorios; evita --delete hasta entender su efecto.
  • Usa Git para código fuente para conservar historial, diffs y reversión en lugar de copiar directorios enteros repetidamente.
  • Los adjuntos de Remote Control pueden llegar al VPS, pero los archivos generados del proyecto siguen necesitando Git, SCP o rsync.
  • Previsualiza aplicaciones web mediante reenvío local de puerto SSH en lugar de exponer puertos de desarrollo públicamente.
# Descargar un archivo de texto pequeño
ssh vps-claude 'cat /srv/my-project/result.md' > ./result.md

# Subir un archivo
scp ./input.zip vps-claude:/srv/my-project/

# Descargar un archivo
scp vps-claude:/srv/my-project/result.md ./result.md

# Subir contenido de un directorio
rsync -av --partial --progress ./my-project/ vps-claude:/srv/my-project/

# Descargar contenido de un directorio
rsync -av --partial --progress vps-claude:/srv/my-project/ ./my-project/

# Revisar cambios de código en el VPS
git status
git diff

# Reenviar la app en 127.0.0.1:3000 del VPS a la misma dirección local
ssh -L 127.0.0.1:3000:127.0.0.1:3000 vps-claude
# Luego abre http://127.0.0.1:3000

12. Contenedores, bastiones y redes restringidas

  • Usa la función oficial Claude Code Dev Container y un volumen nombrado para conservar autenticación y ajustes entre compilaciones; nunca metas credenciales en una imagen ni hagas commit de un contenedor que las tenga.
  • No montes todo ~/.ssh del host; prefiere tokens cortos o un gestor de secretos y trata archivos del proyecto y configuración de Claude como almacenamiento separado.
  • Remote Control solo necesita HTTPS saliente, así que no hace falta IP pública. Para SSH usa bastión, WireGuard, red overlay o VPN organizacional.
  • Para proxy o CA empresarial en un VPS Linux, pon HTTPS_PROXY y NODE_EXTRA_CA_CERTS en ~/.claude/settings.json. Desktop SSH puede no leer ~/.bashrc.
  • No desactives la verificación TLS para evitar errores de certificado.
// ~/.claude/settings.json
{
  "env": {
    "HTTPS_PROXY": "http://proxy.example.com:8080",
    "NODE_EXTRA_CA_CERTS": "/etc/ssl/certs/example-ca.pem"
  }
}

// devcontainer.json: conservar configuración entre recompilaciones
"mounts": [
  "source=claude-code-config,target=/home/node/.claude,type=volume"
],
"containerEnv": {
  "CLAUDE_CONFIG_DIR": "/home/node/.claude"
}

13. Diagnóstico y lista de seguridad

  • El acceso del navegador termina pero la terminal no: copia el código de acceso del navegador a la terminal del VPS; los callbacks locales suelen fallar por SSH y contenedores.
  • No encuentra claude: revisa ~/.local/bin en PATH, ejecuta claude doctor y usa ruta absoluta en SSH no interactivo.
  • Remote Control pide autenticación de suscripción: revisa claves API, CLAUDE_CODE_OAUTH_TOKEN, setup-token, proveedores de terceros, URL base personalizada y política de organización, luego usa /login completo.
  • SSH funciona pero Desktop no crea el entorno: revisa SFTP, MaxSessions, permisos del home, noexec, disco, acceso saliente y proxy en el settings.json remoto.
  • La tarea desaparece al desconectar: revisa tmux, KillUserProcesses, reinicio del VPS, renovación de credenciales y reemplazo del ayudante.
  • Evita --dangerously-skip-permissions en producción; empieza con Manual o Plan y concede solo los permisos que la tarea necesita.
  • Si tu ordenador debe apagarse, usa Cloud Session o diseña deliberadamente una tarea del lado del servidor y renovación de credenciales.