termal.in

← Блог

Как подключить Cursor к серверу по SSH (настройка MCP)

· обновлено 29 сент. 2026 г. · Termalin Team cursormcpai-agentssshtutorial

Вот как подключить ИИ-агента Cursor к вашим серверам по SSH через MCP-сервер так, чтобы приватный ключ ни разу не попал в окружение агента. Начнём с того, зачем это вообще нужно. Агент Cursor уверенно чувствует себя в репозитории. Но как только задача выходит за его пределы — проверить, почему не стартует сервис, выполнить миграцию, починить конфиг nginx на самой машине — ему нужен SSH. И вот неудобная часть: агент Cursor выполняет команды в терминале на вашей машине, так что если ваши ключи лежат разблокированными в ~/.ssh или в запущенном ssh-agent, ему не нужно, чтобы вы что-то ему «давали» — ssh prod уже работает. Вы по умолчанию выдали полный доступ к серверам, так и не приняв этого решения.

Есть расклад получше: агент просит, а аутентификацию выполняет что-то под вашим контролем. Мы писали о том, почему вставить ключ — это единственный ход, который не отыграть назад (на английском), и что такое MCP-сервер на самом деле (на английском); эта статья — практическая версия для Cursor. Двадцать минут, один VPS, и ключ ни разу не попадает в пределы досягаемости агента.

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

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

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

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

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

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

Шаг 2 — зарегистрируйте сервер в mcp.json

Cursor подхватывает MCP-серверы из JSON-файла — .cursor/mcp.json в корне проекта только для этого проекта или ~/.cursor/mcp.json, чтобы сервер был доступен везде. Для локального (stdio) сервера, как у Termalin, запись — это команда и её аргументы:

{
  "mcpServers": {
    "termalin": {
      "command": "<path>/termalin-mcp",
      "args": []
    }
  }
}

Вот и вся интеграция. Глобальный файл здесь — разумный выбор: доступ к серверам не вопрос отдельного репозитория. Перезапустите Cursor (или перезагрузите список MCP в его настройках), убедитесь, что сервер показан как запущенный, — и инструменты появляются у агента: hosts_list, ssh_exec, постоянные сессии (session_open, session_exec), чтение и запись по SFTP.

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

Шаг 3 — дайте ему реальную задачу

Не начинайте с демонстрационной команды; начните с задачи, которую вы бы и правда делали:

Health-check на staging-1 мигает со вчерашнего деплоя. Нужно выяснить, почему, и починить.

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

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

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

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

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

Нет рядом десктопа? Используйте облачный эндпоинт

Если агент работает там, где нет вашего десктопа — CI, облачная песочница, — используйте облачный MCP-сервер вместо приложения. Интерактивно: добавьте https://termal.in/mcp в Cursor по URL и войдите один раз на странице Termalin (OAuth, никаких ключей вставлять не нужно); для запусков без присмотра создайте API-ключ в веб-кабинете Termalin и направьте клиент на облачный MCP-эндпоинт. mcp.json в Cursor принимает и удалённые серверы по URL:

{
  "mcpServers": {
    "termalin": {
      "url": "https://termal.in/api/v1/mcp",
      "headers": { "Authorization": "Bearer tk_live_…" }
    }
  }
}

(Если ваша сборка Cursor пока не поддерживает заголовки авторизации для удалённых серверов — оставайтесь на локальном stdio-сервере, он и так лучший выбор по умолчанию.) Облачный эндпоинт достаёт только до серверов, подключённых через агент Connector, и каждый запуск аутентифицируется краткосрочным сертификатом — та же идея хранителя, нигде нет постоянного доступа. Ключи ограничены конкретными серверами, истекают по выбранному вами расписанию и мгновенно умирают при отзыве. Подробности — в документации MCP.

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

Относитесь к первой неделе как к адаптации нового коллеги, который очень быстро печатает. Держите сетку наблюдения открытой. Давайте ему задачи с понятным состоянием «готово» — «сделай, чтобы health-check проходил», «обнови сертификат» — и читайте, как он к этому идёт. Держите поэкземплярное одобрение в Cursor включённым, пока агент не заслужит автоодобрение для скучных инструментов, и расширяйте список разрешённых хостов по одной непримечательной машине за раз.

Асимметрия — в этом весь смысл: агент получает реальную досягаемость, а вы сохраняете то единственное, что нельзя забрать назад. (Запускаете вместо этого Claude Code? Та же настройка, одна команда (на английском).)


Тариф Free в Termalin — это всё десктоп-приложение, и каждый новый аккаунт получает 14 дней Pro бесплатно — скачайте его, начните со страницы Cursor SSH или сначала прочитайте документацию MCP.

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

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

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