termal.in

← Блог

Подключите Gemini CLI от Google к серверам по SSH — безопасно

· Termalin Team geminimcpai-agentssshtutorial

Gemini CLI от Google — способный агент в терминале, и, как и другие кодинг-агенты, он рано или поздно должен покинуть ваш ноутбук и коснуться настоящего сервера — перезапустить службу, посмотреть лог, запустить деплой на самой машине. Соблазнительный короткий путь — позволить ему запускать ssh напрямую: CLI и так выполняет команды оболочки, так что если ключ лежит разблокированным в ~/.ssh или в запущенном ssh-agent, то ssh prod сработает у него — хотели вы дать такой доступ или нет. Вот и вся проблема в одну строку — вы по умолчанию отдали полный доступ к серверу.

В Gemini CLI встроен путь почище: он говорит на MCP, том же протоколе, что используют Claude Code, Cursor и Codex (на английском). Termalin — это SSH-клиент со встроенным MCP-сервером, так что вы направляете Gemini на этот сервер, и он по-настоящему работает с вашими хостами — при этом агент никогда не держит ключ. Около двадцати минут, один хост.

Что понадобится

  • Termalin — десктоп-приложение; тарифа Free достаточно. Его встроенный MCP-сервер — это то, с чем разговаривает Gemini.
  • Gemini CLI на той же машине.
  • Один хост, сохранённый в Termalin, — что-нибудь не самое ответственное для первого запуска.

Шаг 1 — включите доступ агента и задайте политику

Доступ агента выключен по умолчанию. В Termalin откройте Настройки → «Доступ агента (MCP)», включите его и отметьте хосты, до которых Gemini может дотягиваться. Всего, что вне этого списка, для агента не существует — новый хост — это решение, которое вы принимаете в приложении, а не то, к чему агент может подвести разговором.

Под капотом Termalin пишет для MCP-сервера список хостов с записями авторизации только для агента — ни пароли, ни ключи в этот файл не попадают — а аутентификация остаётся у хранителя ключей приложения: вы разблокируете один раз, и Termalin подписывает от имени агента. Нет файла ключа, который Gemini мог бы прочитать, значит нечему утекать, и чёрный ход через ~/.ssh выше закрывается вместе с этим.

Пока вы там, задайте для каждого хоста политику агента: полный доступ, список разрешённых команд или блокировка. Для всего, что вам дорого, начинайте со списка разрешённых — настройке по принципу наименьших привилегий посвящён отдельный короткий пост (на английском).

Шаг 2 — зарегистрируйте сервер в настройках Gemini

Gemini CLI читает MCP-серверы из объекта mcpServers в своём файле настроек — ~/.gemini/settings.json для всех ваших проектов или локальный для проекта .gemini/settings.json. Добавьте одну запись, указывающую на поставляемый бинарник termalin-mcp:

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

Вот и вся интеграция. Перезапустите Gemini CLI (или перезагрузите его MCP-серверы), и инструменты появляются у агента: hosts_list, ssh_exec, постоянные сессии (session_open / session_exec), чтение и запись по SFTP и проброс портов. Выполните /mcp в Gemini, чтобы убедиться, что сервер подключён, и увидеть инструменты, которые он предоставляет. Полный список инструментов (на английском) документирует каждый.

Если вы вообще предпочитаете не возиться с MCP, есть вариант полегче: в Termalin есть вкладка локального терминала, так что можно просто набрать gemini и запустить CLI прямо внутри приложения рядом с вашими SSH-сессиями. Это даёт вам Gemini в том же окне — но именно настройка MCP выше позволяет Gemini действовать на ваших серверах через хранителя, и это та часть, которая держит ваши ключи вне его досягаемости.

Шаг 3 — дайте ему настоящее поручение

Пропустите демо. Поручите что-нибудь настоящее:

Деплой на staging-1 завершился, но проверка здоровья то и дело мигает. Выясни почему и исправь.

Gemini вызывает hosts_list, видит staging-1, открывает сессию и начинает тянуть за ниточки — статус службы, последние сто строк лога, разницу конфигурации с тем, что запущено. Он предлагает исправление, применяет его в рамках заданной вами политики и подтверждает, что проверка стала зелёной.

Комфортным, а не нервотрёпным это делает то, что ничего из этого не скрыто. Каждая сессия, которую открывает Gemini, появляется в Termalin как живая вкладка терминала, а сетка наблюдения (на английском) ставит все открытые сессии бок о бок, и плитки, управляемые агентом, подсвечиваются. Вы смотрите, как команды приземляются по мере выполнения, и можете вмешаться в любой момент.

Где проходят границы

Значения по умолчанию, которые стоит знать, прежде чем направлять его на что-то важное:

  • Ваши ключи никогда не попадают в окружение Gemini. Хранитель подписывает; агент запрашивает. Отзыв доступа — это переключатель в Настройках, а не ротация ключей по всему парку.
  • Его досягаемость — это список хостов, которые вы отметили на шаге 1, а политика команд каждого хоста ограничивает то, что он может там запускать. «Полный» на проде — это по-прежнему полная оболочка; задавайте его осознанно.
  • Ввод в вашу сессию — это отдельно. По умолчанию Gemini открывает собственные сессии; присоединение к уже открытой вами — это отдельный переключатель согласия.
  • Каждая команда зафиксирована. Записи захватывают только вывод — никогда нажатия клавиш — и каждая команда агента помечена как его (на английском) в журнале аудита, с устройством и IP, откуда она пришла.

Когда Gemini работает в облаке

Если Gemini работает там, где нет вашего десктопа — в CI-задаче, в облачной песочнице, — локальный бинарник недостижим, но облачный эндпоинт MCP Termalin — достижим. Создайте API-ключ в веб-кабинете, ограничьте его область нужными серверами, поставьте только чтение или список разрешённых, задайте срок действия и направьте агента на https://termal.in/api/v1/mcp. Он добирается до ваших серверов, подключённых через Connector, без ключа, аутентифицируя каждый запуск краткосрочным сертификатом — полный паттерн для CI/CD здесь (на английском).

Привычка, которая закрепляет результат

Относитесь к первой неделе как к онбордингу быстрого коллеги. Держите сетку наблюдения открытой, давайте Gemini поручения с чётким признаком завершённости и читайте, как он к нему приходит, прежде чем что-либо расширять. В этом размене весь смысл: Gemini получает реальную досягаемость до ваших серверов, а вы сохраняете единственное — ключи, — что нельзя забрать обратно, стоит им однажды утечь.


Termalin — кроссплатформенный SSH-клиент со встроенным MCP-сервером, хранителем ключей и политикой агента для каждого хоста — скачайте его, прочитайте справочник MCP или посмотрите, как он обращается с ключами.

Попробуйте на одном хосте.

Termalin — быстрый SSH-клиент для вас и ваших агентов.

Бесплатный тариф · 14 дней Pro бесплатно · цены