termal.in

← Blog

Conecte o Gemini CLI do Google aos seus servidores por SSH — com segurança

· Termalin Team geminimcpai-agentssshtutorial

O Gemini CLI do Google é um agente capaz dentro de um terminal e, como os outros agentes de código, mais cedo ou mais tarde precisa sair do seu notebook e tocar um servidor de verdade — reiniciar um serviço, acompanhar um log, rodar o deploy na própria máquina. O atalho tentador é deixá-lo rodar ssh diretamente: a CLI já executa comandos de shell, então, se uma chave está desbloqueada em ~/.ssh ou em um ssh-agent em execução, ssh prod funciona para ela, quer você tenha pretendido conceder isso ou não. Esse é o problema inteiro em uma linha — você deu acesso total ao servidor por padrão.

O Gemini CLI tem um caminho mais limpo embutido: ele fala MCP, o mesmo protocolo que o Claude Code, o Cursor e o Codex usam (links em inglês). O Termalin é um cliente SSH com um servidor MCP integrado, então você aponta o Gemini para esse servidor e ele trabalha nos seus hosts de verdade — enquanto o agente nunca guarda uma chave. Cerca de vinte minutos, um host.

O que você precisa

  • Termalin — o app de desktop; o plano Free serve. O servidor MCP integrado dele é com quem o Gemini fala.
  • Gemini CLI, na mesma máquina.
  • Um host salvo no Termalin — algo de baixo risco para a primeira execução.

Passo 1 — ligue o acesso do agente e defina uma política

O acesso do agente vem desativado por padrão. No Termalin, abra Configurações → Acesso do agente (MCP), habilite-o e marque os hosts que o Gemini pode alcançar. Nada fora dessa lista existe do ponto de vista do agente — um host novo é uma decisão que você toma no app, não algo em que o agente consiga se enfiar na conversa.

Nos bastidores, o Termalin grava um inventário de hosts para o servidor MCP com entradas de autenticação apenas de agente — nenhuma senha ou chave cai nesse arquivo — e a autenticação fica com a custódia de chaves do app: você desbloqueia uma vez, e o Termalin assina em nome do agente. Não há arquivo de chave para o Gemini ler, então não há nada para vazar, e a porta dos fundos do ~/.ssh acima se fecha junto.

Já que você está lá, defina a política de agente de cada host: acesso total, uma lista de comandos permitidos, ou bloqueado. Comece com uma lista de comandos permitidos para qualquer coisa com que você se importa — a configuração de menor privilégio é um post curto à parte (em inglês).

Passo 2 — registre o servidor nas configurações do Gemini

O Gemini CLI lê servidores MCP do objeto mcpServers no arquivo de configurações dele — ~/.gemini/settings.json para todos os seus projetos, ou um .gemini/settings.json local do projeto. Adicione uma entrada apontando para o binário termalin-mcp incluído:

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

É essa a integração inteira. Reinicie o Gemini CLI (ou recarregue os servidores MCP dele), e as ferramentas aparecem para o agente: hosts_list, ssh_exec, sessões persistentes (session_open / session_exec), leituras e escritas de SFTP, e encaminhamentos de porta. Rode /mcp no Gemini para confirmar que o servidor está conectado e ver as ferramentas que ele expõe. A lista completa de ferramentas (em inglês) documenta cada uma.

Se você preferir não configurar o MCP de jeito nenhum, há uma opção mais leve: o Termalin tem uma aba de terminal local, então você pode simplesmente digitar gemini e rodar a CLI dentro do próprio app, ao lado das suas sessões SSH. Isso lhe dá o Gemini na mesma janela — mas é a configuração de MCP acima que deixa o Gemini agir nos seus servidores por meio da custódia, que é a parte que mantém as suas chaves fora do alcance dele.

Passo 3 — dê a ele uma tarefa de verdade

Pule a demonstração. Entregue algo real:

O deploy para staging-1 terminou, mas o health check fica oscilando. Descubra por quê e corrija.

O Gemini chama hosts_list, vê staging-1, abre uma sessão e começa a puxar os fios — status do serviço, as últimas cem linhas de log, o diff da config contra o que está rodando. Ele propõe uma correção, aplica-a dentro da política que você definiu e confirma que o check fica verde.

O que torna isso confortável em vez de angustiante é que nada disso fica escondido. Cada sessão que o Gemini abre aparece no Termalin como uma aba de terminal ao vivo, e a grade de monitoramento (em inglês) coloca todas as sessões abertas lado a lado, com os blocos conduzidos pelo agente brilhando. Você vê os comandos chegarem enquanto rodam, e pode intervir a qualquer momento.

Onde ficam os limites

Padrões que vale conhecer antes de apontá-lo para qualquer coisa que importe:

  • Suas chaves nunca entram no ambiente do Gemini. A custódia assina; o agente pede. Revogar o acesso é uma opção em Configurações, não uma rotação de chaves por toda a frota.
  • O alcance dele é a lista de hosts que você marcou no Passo 1, e a política de comandos de cada host limita o que ele pode rodar ali. “Acesso total” em produção ainda é um shell completo — defina-o de propósito.
  • Digitar na sua sessão é separado. Por padrão, o Gemini abre as próprias sessões; entrar em uma que você já tem aberta é uma opção de consentimento à parte.
  • Cada comando fica registrado. As gravações capturam apenas a saída — nunca as teclas digitadas — e cada comando do agente é marcado como do agente (em inglês) no registro de auditoria, com o dispositivo e o IP de onde veio.

Quando o Gemini roda na nuvem

Se o Gemini está rodando onde o seu desktop não está — um job de CI, um sandbox na nuvem —, o binário local não é alcançável, mas o endpoint MCP hospedado do Termalin é. Crie uma chave de API no painel web, limite-a aos servidores certos, deixe-a somente leitura ou com uma lista de comandos permitidos, dê a ela uma expiração e aponte o agente para https://termal.in/api/v1/mcp. Ele alcança os seus servidores cadastrados com um Connector sem chave, autenticando cada execução com um certificado de curta duração — o padrão completo de CI/CD está aqui (em inglês).

O hábito que faz isso pegar

Trate a primeira semana como a integração de um colega de equipe rápido. Mantenha a grade de monitoramento aberta, dê ao Gemini tarefas com um estado de conclusão claro e leia como ele chega lá antes de ampliar qualquer coisa. A troca é o ponto: o Gemini ganha alcance real nos seus servidores, e você mantém a única coisa — as chaves — que não pode ser devolvida depois que vaza.


O Termalin é um cliente SSH multiplataforma com um servidor MCP integrado, uma custódia de chaves e política de agente por host — baixe o Termalin, leia a referência MCP, ou veja como ele lida com as chaves.

Experimente em um host.

Termalin é um cliente SSH rápido para você — e para seus agentes.

Plano gratuito · 14 dias de Pro grátis · preços