termal.in

← Blog

Conecta Gemini CLI de Google a tus servidores por SSH — con seguridad

· Termalin Team geminimcpai-agentssshtutorial

Gemini CLI de Google es un agente capaz en una terminal, y como el resto de los agentes de código, tarde o temprano necesita salir de tu portátil y tocar un servidor de verdad — reiniciar un servicio, seguir un registro, ejecutar el despliegue en la propia máquina. El atajo tentador es dejar que ejecute ssh directamente: la CLI ya ejecuta comandos de shell, así que si hay una clave desbloqueada en ~/.ssh o en un ssh-agent en marcha, ssh prod le funciona, quisieras concederlo o no. Ese es todo el problema en una línea — regalaste acceso completo al servidor por defecto.

Gemini CLI trae una vía más limpia incorporada: habla MCP (en inglés), el mismo protocolo que usan Claude Code (en inglés), Cursor (en inglés) y Codex (en inglés). Termalin es un cliente SSH con un servidor MCP integrado, así que apuntas Gemini a ese servidor y trabaja tus hosts de verdad — mientras el agente nunca tiene una clave. Unos veinte minutos, un host.

Lo que necesitas

  • Termalin — la app de escritorio; el plan Free vale. Su servidor MCP integrado es con lo que habla Gemini.
  • Gemini CLI, en la misma máquina.
  • Un host guardado en Termalin — algo de bajo riesgo para la primera ejecución.

Paso 1 — activa el acceso de agentes y fija una política

El acceso de agentes está desactivado por defecto. En Termalin, abre Ajustes → MCP, actívalo, y marca los hosts a los que Gemini puede llegar. Nada fuera de esa lista existe en lo que respecta al agente — un host nuevo es una decisión que tomas en la app, no algo a lo que el agente pueda colarse hablando.

Por debajo, Termalin escribe un inventario de hosts para el servidor MCP con entradas de auth solo para el agente — ninguna contraseña ni clave aterriza en ese archivo — y la autenticación se queda con el custodio de claves de la app: desbloqueas una vez, y Termalin firma en nombre del agente. No hay archivo de clave que Gemini pueda leer, así que no hay nada que filtrar, y la puerta trasera de ~/.ssh de arriba se cierra con ello.

Ya que estás, fija la política de agente de cada host: acceso completo, una lista de comandos permitidos, o bloqueado. Empieza con una lista de permitidos para cualquier cosa que te importe — la configuración de privilegio mínimo es su propio artículo breve (en inglés).

Paso 2 — registra el servidor en los ajustes de Gemini

Gemini CLI lee los servidores MCP del objeto mcpServers en su archivo de ajustes — ~/.gemini/settings.json para todos tus proyectos, o un .gemini/settings.json local del proyecto. Añade una entrada que apunte al binario termalin-mcp incluido:

{
  "mcpServers": {
    "termalin": {
      "command": "<path>/termalin-mcp"
    }
  }
}

Esa es toda la integración. Reinicia Gemini CLI (o recarga sus servidores MCP), y las herramientas aparecen ante el agente: hosts_list, ssh_exec, sesiones persistentes (session_open / session_exec), lecturas y escrituras SFTP, y reenvíos de puertos. Ejecuta /mcp en Gemini para confirmar que el servidor está conectado y ver las herramientas que expone. La lista completa de herramientas (en inglés) documenta cada una.

Si prefieres no cablear MCP en absoluto, hay una opción más ligera: Termalin tiene una pestaña de terminal local, así que puedes escribir gemini sin más y ejecutar la CLI dentro de la propia app, junto a tus sesiones SSH. Eso te da Gemini en la misma ventana — pero es la configuración de MCP de arriba la que permite que Gemini actúe sobre tus servidores a través del custodio, que es la parte que mantiene tus claves fuera de su alcance.

Paso 3 — dale una tarea de verdad

Sáltate la demo. Dale algo real:

El despliegue a staging-1 terminó pero la comprobación de salud sigue oscilando. Averigua por qué y arréglalo.

Gemini llama a hosts_list, ve staging-1, abre una sesión, y empieza a tirar de los hilos — estado del servicio, las últimas cien líneas de registro, el diff de configuración frente a lo que está corriendo. Propone un arreglo, lo aplica dentro de la política que fijaste, y confirma que la comprobación se pone en verde.

Lo que hace esto cómodo en lugar de angustiante es que nada de ello está oculto. Cada sesión que abre Gemini aparece en Termalin como una pestaña de terminal en vivo, y el watch grid (en inglés) pone todas las sesiones abiertas lado a lado con los mosaicos que conduce el agente brillando. Ves los comandos aterrizar según se ejecutan, y puedes intervenir en cualquier momento.

Dónde están los límites

Valores por defecto que vale la pena conocer antes de apuntarlo a algo que importe:

  • Tus claves nunca entran en el entorno de Gemini. El custodio firma; el agente solicita. Revocar el acceso es un interruptor en Ajustes, no una rotación de claves por toda tu flota.
  • Su alcance es la lista de hosts que marcaste en el Paso 1, y la política de comandos de cada host acota lo que puede ejecutar ahí. «Completa» en producción sigue siendo una shell completa — fíjala con intención.
  • Teclear en tu sesión es aparte. Por defecto Gemini abre sus propias sesiones; unirse a una que ya tienes abierta es otro interruptor de consentimiento aparte.
  • Cada comando queda registrado. Las grabaciones capturan solo la salida — nunca las pulsaciones — y cada comando del agente queda marcado como del agente (en inglés) en el registro de auditoría, con el dispositivo y la IP de los que vino.

Cuando Gemini corre en la nube

Si Gemini corre donde tu escritorio no está — un trabajo de CI, un sandbox en la nube — el binario local no es alcanzable, pero el endpoint MCP alojado de Termalin sí. Crea una clave API en el panel web, acótala a los servidores correctos, ponla en solo lectura o en una lista de permitidos, dale una caducidad, y apunta el agente a https://termal.in/api/v1/mcp. Llega a tus servidores dados de alta con un Connector sin clave, autenticando cada ejecución con un certificado de corta duración — el patrón completo de CI/CD está aquí (en inglés).

El hábito que lo afianza

Trata la primera semana como la incorporación de un compañero rápido. Mantén el watch grid abierto, dale a Gemini tareas con un estado de «hecho» claro, y lee cómo llega ahí antes de ampliar nada. El intercambio es la clave: Gemini obtiene alcance real en tus servidores, y tú conservas lo único — las claves — que no se puede recuperar una vez que ha salido.


Termalin es un cliente SSH multiplataforma con un servidor MCP integrado, un custodio de claves y política de agente por host — descárgalo, lee la referencia MCP, o mira cómo gestiona las claves.

Pruébalo en un host.

Termalin es un cliente SSH rápido para ti y para tus agentes.

Plan gratuito · 14 días de Pro de prueba · precios