Cómo iniciar sesión en Codex en un servidor sin interfaz gráfica

Inicia sesión en Codex CLI en un servidor sin navegador con el código de dispositivo, un túnel SSH, copiando auth.json o con una clave de API, y mantén el inicio de sesión utilizable desde el móvil.

Basado en
CLI
0.2.17
Ref de preview
a2c45c8

En resumen

codex login arranca un pequeño servidor de callback en el equipo y espera que tu navegador vuelva a localhost. En un servidor sin interfaz gráfica, ese navegador está en otro sitio. Tus opciones, en un orden razonable para probarlas:

  1. Código de dispositivo: codex login --device-auth. Abre el enlace en cualquier dispositivo, introduce el código de un solo uso y listo. Puede que antes tengas que activar un interruptor en los ajustes de seguridad de ChatGPT.
  2. Túnel SSH: redirige el puerto 1455 desde tu portátil, ejecuta codex login y completa el flujo normal en el navegador.
  3. Copiar auth.json: inicia sesión en un ordenador con navegador y copia ~/.codex/auth.json al servidor.
  4. Clave de API: para scripts y CI, donde la facturación por token es lo que quieres de todos modos.

Comprueba el resultado con codex login status.

El problema

Una configuración habitual: Codex se ejecuta en un pequeño servidor Linux para que las tareas largas sigan cuando el portátil entra en reposo. El primer codex login allí imprime una URL. La abres en el portátil, inicias sesión y la última redirección acaba en localhost:1455 del portátil. Allí no escucha nada, así que el inicio de sesión no llega a ningún sitio.

La solución es fácil cuando sabes qué camino encaja con tu cuenta. Lo incómodo es que el camino rápido, el código de dispositivo, está desactivado en algunas cuentas hasta que cambias un ajuste.

Opción 1: inicia sesión en Codex con codex login --device-auth

En el servidor:

codex login --device-auth

Codex imprime un enlace y un código de un solo uso. Abre el enlace en un navegador del portátil o el móvil, inicia sesión en ChatGPT e introduce el código. La terminal termina sola. Nada tiene que conectarse de vuelta al servidor, por eso funciona detrás de NAT y en contenedores.

Lo que conviene saber:

  • El interruptor. Puede que el inicio de sesión por código de dispositivo tenga que activarse en los ajustes de seguridad de ChatGPT, o que lo active un administrador en los ajustes del espacio de trabajo. Si el comando falla al instante, revisa eso primero.
  • El código dura poco. Si te distraes, empieza de nuevo en lugar de reutilizar un código antiguo.
  • Introduce solo códigos que haya impreso tu propia terminal. Un código de dispositivo inicia sesión en la terminal que lo pidió. Un código que te envía otra persona es una petición para que su ordenador entre en tu cuenta.

Opción 2: pasa el callback del inicio de sesión de Codex por un túnel SSH

Si los códigos de dispositivo están desactivados y no puedes cambiarlo, mantén el flujo normal del navegador y lleva el callback por SSH. Desde tu portátil:

ssh -L 1455:localhost:1455 you@server

Dentro de esa sesión SSH, ejecuta codex login y abre la URL impresa en el navegador del portátil. Cuando el inicio de sesión redirige a localhost:1455, el túnel lo entrega al proceso de Codex en el servidor.

Si falla:

  • Asegúrate de que nada más en tu portátil usa ya el puerto 1455.
  • Mata los procesos codex login antiguos en el servidor antes de empezar uno nuevo. Uno que se haya quedado colgado puede ocupar el puerto.
  • codex login escribe un archivo codex-login.log en el directorio de registros de Codex. Léelo cuando el paso del navegador y la terminal no coincidan.

Opción 3: copia el auth.json de Codex desde un ordenador con navegador

Inicia sesión en tu portátil con codex login y copia el archivo de credenciales:

scp ~/.codex/auth.json you@server:~/.codex/auth.json

OpenAI lo documenta como alternativa, y es práctico para un equipo que reconstruyes a menudo. Trata ese archivo como una contraseña. Quien lo tenga entra en tu cuenta de ChatGPT.

Si tu portátil guarda las credenciales de Codex en el llavero del sistema en lugar de auth.json, no hay archivo que copiar. La documentación de OpenAI explica cómo cambiar al almacenamiento en archivo con cli_auth_credentials_store.

Opción 4: usa una clave de API de OpenAI para scripts y CI

printenv OPENAI_API_KEY | codex login --with-api-key

La autenticación con clave de API se factura a precio estándar de API a través de tu cuenta de OpenAI Platform, aparte de una suscripción de ChatGPT. OpenAI la recomienda para flujos programáticos como trabajos de CI, y algunas funciones del espacio de trabajo de ChatGPT no están disponibles con ella.

Mantén el inicio de sesión de Codex utilizable desde el móvil

Iniciar sesión una vez es lo fácil. Lo difícil es que el inicio de sesión caduque en el servidor mientras no estás, y enterarte solo cuando una sesión que abriste desde el móvil se queda sin hacer nada.

Si quieres iniciar sesiones de Codex en el servidor desde el móvil, ver su estado y aprobar comandos sin abrir una app de SSH, Happier es una app de código abierto para ejecutar y orquestar Codex, Claude Code y otros agentes entre dispositivos, desde el móvil, el escritorio o la web.

Los agentes se ejecutan en tus propios ordenadores, y las apps del móvil, de escritorio y web se conectan a ellos. Cómo usar Happier desde el móvil explica la configuración. Está en GitHub, puedes descargarlo aquí y hay un Discord.

1) Instala Happier en el servidor y emparéjalo con el móvil

curl -fsSL https://happier.dev/install | bash
happier auth login --method mobile

Escanea el código QR con la app de Happier en el móvil y apruébalo. El servidor aparece como un ordenador (una máquina en Happier) en el que puedes iniciar sesiones.

2) Comprueba y renueva el inicio de sesión de Codex desde la app de Happier

Abre Configuración (Settings) → IA y agentes (AI & Agents) → Configuración del proveedor de IA (AI backends) → Codex, elige el servidor en la barra de contexto y lee la sección Autenticación (Authentication). Muestra si Codex tiene la sesión iniciada en ese ordenador y con qué método.

Iniciar sesión (Log in) o Volver a autenticar (Reauthenticate) abre en el servidor una Terminal de inicio de sesión del proveedor (Provider login terminal) que ejecuta codex login. Comprobar ahora (Check now) actualiza el estado después de iniciar sesión de otra forma, por ejemplo con codex login --device-auth por SSH.

3) Guarda el inicio de sesión de Codex en Happier como servicio conectado

Happier también puede guardar el inicio de sesión de tu suscripción de Codex como servicio conectado. Se guarda cifrado en tu cuenta de Happier y solo se descifra en tus propios dispositivos, así que las sesiones de cualquiera de tus ordenadores pueden usarlo:

happier connect codex --device    # device-code flow, for a headless box
happier connect codex --paste     # fallback: paste the final redirect URL
happier connect codex --api-key   # store an OpenAI API key instead

--device usa el mismo inicio de sesión por código de dispositivo que la opción 1, así que se aplica el mismo ajuste de ChatGPT. --paste es la versión sin túnel de la opción 2: inicias sesión en el portátil, copias la URL en la que termina el navegador y la pegas en la terminal. Después la cuenta aparece en Configuración (Settings) → Servicios conectados (Connected services), y puedes elegirla al iniciar una sesión de Codex.

El límite, dicho una vez: el servidor tiene que estar encendido y conectado. Happier hace visible el inicio de sesión y permite arreglarlo desde el móvil. No mantiene con sesión iniciada un equipo apagado.

Solución de problemas

codex login --device-auth falla al instante

Probablemente el inicio de sesión por código de dispositivo está desactivado en tu cuenta. Actívalo en los ajustes de seguridad de ChatGPT o pídeselo al administrador de tu espacio de trabajo. Si no es posible, usa el túnel SSH o copia auth.json.

La pestaña del navegador del inicio de sesión de Codex no llega a localhost:1455

Es el callback intentando llegar a tu portátil. Abre un túnel SSH y vuelve a intentarlo, o usa happier connect codex --paste y pega la URL de la barra de direcciones.

codex login status dice que hay sesión, pero las sesiones de Codex de un servicio fallan

Puede que el servicio se ejecute con otro usuario o con otro directorio personal, así que lee otro ~/.codex. Inicia sesión con el usuario con el que se ejecuta el servicio, o guarda el inicio de sesión como servicio conectado para que la sesión lo reciba al arrancar.

El control remoto de Codex dice que requiere autenticación de ChatGPT

Has iniciado sesión con una clave de API. El control remoto necesita un inicio de sesión de ChatGPT, así que usa la opción 1, 2 o 3.

Preguntas frecuentes

¿Puedo iniciar sesión en Codex sin ningún navegador?

Solo con una clave de API. Todos los métodos de inicio de sesión de ChatGPT usan un navegador en algún dispositivo, pero puede ser tu móvil.

¿Es seguro copiar auth.json?

Funciona, y es tan delicado como una contraseña. Haz que solo lo pueda leer tu usuario, y no lo subas al repositorio ni lo metas en una imagen compartida.

¿El inicio de sesión por código de dispositivo funciona en Docker?

Sí. Como nada llama de vuelta al contenedor, encaja bien ahí.

¿Qué suscripciones funcionan?

Una suscripción de ChatGPT que incluya Codex, o una clave de API de OpenAI. La página de precios de OpenAI indica qué suscripciones incluyen Codex.

Guías relacionadas

codexsshlinuxheadlessself-host
Última actualización: 2026-10-26