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-claude4. 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 tmux5. 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.json7. 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.md8. 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-claude10. 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-claude11. 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:300012. 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.