SSH Tunnels

Guía práctica para autenticar apps en un servidor remoto desde tu Mac

El problema

Tienes una app en un servidor remoto que necesita autenticarse con Google (u otro servicio OAuth). Para eso, abre un mini servidor web local en un puerto aleatorio y espera que el navegador lo llame.

El servidor no tiene navegador. Tu Mac sí. Pero cuando abres la URL en tu Mac, el callback de Google va a 127.0.0.1:XXXXX — es decir, a tu propia máquina, no al servidor.

Tu Mac Servidor remoto

Navegador abre URL de Google
Google redirige a → 127.0.0.1:36345 ← gog espera aquí
✗ Conexión rechazada

El callback llega a tu Mac, pero la app (gog) está escuchando en el servidor. No se conectan.

La solución: túnel SSH

Un túnel SSH crea un puente entre un puerto de tu Mac y el mismo puerto del servidor. Todo lo que llegue a localhost:36345 en tu Mac se reenvía automáticamente al servidor.

Tu Mac Servidor remoto

Navegador → 127.0.0.1:36345

[ túnel SSH ] ────────────→ :36345 ← gog escucha aquí
✓ OAuth completado

Con el túnel activo, el callback de Google llega a tu Mac, viaja por SSH al servidor, y gog lo recibe como si fuera local.

El obstáculo: puerto aleatorio

Cada vez que ejecutas gog auth add, elige un puerto distinto. No puedes saber el puerto antes de ejecutar el comando.

Por eso el proceso tiene dos fases:

  1. Descubrir el puerto

    Ejecutar gog auth add en el servidor y leer el número en la URL generada.

  2. Abrir el túnel con ese puerto exacto

    Sin cerrar el comando anterior, abrir una segunda terminal y conectar el túnel.

  3. Completar el OAuth en el navegador

    Abrir la URL. Google redirige → túnel → servidor → token guardado.

Pasos completos

Necesitas dos terminales abiertas al mismo tiempo en tu Mac.

Terminal 2 Conectar al servidor y lanzar gog

Terminal 2
ssh root@TU_IP_SERVIDOR
gog auth add TU_CUENTA@gmail.com --services sheets,gmail,calendar,drive,contacts

Busca en la URL el número después de 127.0.0.1%3A — ese es el puerto. Ejemplo: ...127.0.0.1%3A36345%2Foauth2...

No cierres esta terminal. Sigue esperando.

Terminal 1 Abrir el túnel con ese puerto

Terminal 1
ssh -L 36345:localhost:36345 root@TU_IP_SERVIDOR
# sustituye 36345 por el puerto que hayas visto

Esta terminal queda conectada y en silencio. Es el túnel.

Navegador Completar el login

Abre la URL que generó gog en Safari o Chrome. Haz login con Google. Cuando veas "You're connected", el token está guardado.

Ya puedes cerrar ambas terminales. El token queda guardado de forma permanente.

Referencia rápida

Sintaxis del túnel

ssh -L PUERTO:localhost:PUERTO usuario@servidor

-L = Local forwarding. El puerto local se conecta al puerto remoto.

Ver tokens guardados

GOG_KEYRING_PASSWORD="TU_PASSPHRASE" \
  gog auth list

Muestra las cuentas autenticadas y sus servicios.

Datos del servidor

IP: TU_IP_SERVIDOR Host: srv1157349.hstgr.cloud Usuario: root

¿Por qué pide passphrase?

Al guardar el token, gog lo cifra en un archivo (/root/.config/gogcli/keyring/). Para cifrar y descifrar necesita una contraseña maestra.

En el servidor esta contraseña está configurada como variable de entorno en el servicio de OpenClaw, así que Amparito puede usar gog sin pedírtela cada vez.

Si alguna vez necesitas autenticar de nuevo, pregúntale a Amparito por Telegram: "¿cuál es la passphrase del keyring de gog?"

Comandos frecuentes

Conectar al servidor

ssh root@TU_IP_SERVIDOR

Subir un archivo al VPS

Mac / Linux
# Subir archivo desde Mac al VPS
scp ~/Desktop/archivo.png root@TU_IP_SERVIDOR:/home/user/web/srv1157349.hstgr.cloud/public_html/proyectos/murias/

# Subir a la web de AdC
scp ~/Desktop/imagen.png root@TU_IP_SERVIDOR:/home/user/web/srv1157349.hstgr.cloud/public_html/proyectos/AdC/
Windows (PowerShell) — usar $HOME en vez de ~
# En Windows la tilde ~ no funciona en scp, usar $HOME
scp $HOME\Desktop\archivo.zip root@TU_IP_SERVIDOR:/home/user/web/srv1157349.hstgr.cloud/public_html/proyectos/murias/

Descargar backup de Amparito al Mac

scp root@TU_IP_SERVIDOR:/root/backups/amparito-backup-2026-04-04.tar.gz ~/Desktop/

# O el más reciente (Mac/Linux):
scp root@TU_IP_SERVIDOR:/root/backups/$(ssh root@TU_IP_SERVIDOR "ls /root/backups/*.tar.gz | tail -1 | xargs basename") ~/Desktop/

Servicios — OpenClaw y PRAXIS360

# Estado
systemctl --user status openclaw-gateway.service
systemctl status murias360

# Reiniciar
systemctl --user restart openclaw-gateway.service
systemctl restart murias360

# Ver logs en tiempo real
journalctl --user -u openclaw-gateway.service -f
journalctl -u murias360 -f

Re-autenticar gog (Google Workspace)

# Ver tokens actuales
GOG_KEYRING_PASSWORD="TU_PASSPHRASE" gog auth list

# Re-autenticar (ver sección de pasos arriba para el túnel)
gog auth add TU_CUENTA@gmail.com --services sheets,gmail,calendar,drive,contacts
# Passphrase del keyring: la tienes guardada con Amparito

Ver backups disponibles

ls -lh /root/backups/
cat /root/backups/backup.log