FRELY / BLOG

Позвольте ИИ помогать управлять серверами, не отдавая ему ваши SSH-ключи

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

Это работает. Но стоит задержаться на одной детали: чтобы ИИ мог выполнять ssh, вы отдаёте ему всю свою папку ~/.ssh.

Через ваш ноутбук: вы отдаёте больше, чем думаете

Чтобы ИИ выполнил ssh prod на вашем компьютере, ему нужно прочитать конфиг и приватные ключи в ~/.ssh. Большинство средств управления доступом умеют лишь определять, доступна ли папка для чтения. Они не могут сказать «только этот один сервер». Это значит:

  • Он может прочитать все приватные ключи, а не только ключ для этого сервера.
  • Пока его команды могут обращаться к сети, ключ может покинуть ваш компьютер. Утёкший ключ продолжает действовать. Отключение доступа ИИ впоследствии не вернёт ключ; придётся удалить публичный ключ с каждого сервера.
  • После входа по ssh то, что ИИ может делать на сервере, зависит от аккаунта, за которым стоит этот ключ. Если это root, у ИИ есть root.

В логе сервера видна только запись «ваш ноутбук вошёл с вашим ключом». Отличить ваши команды от команд ИИ он не может.

Наоборот: пусть сервер подключается сам

Вместо того чтобы давать ИИ ключ от двери сервера, установите на сервере небольшую программу. Сервер сам подключается к вашему аккаунту, а вы решаете, что ИИ там разрешено делать.

С Frely это выглядит так:

  1. На сайте Frely откройте My Devices → Add a computer («Мои устройства» → «Добавить компьютер») и создайте одноразовую команду установки. Вставьте её на сервере. Токен срабатывает один раз, истекает через 15 минут и не сохраняется на сервере.
  2. Сервер сам подключается к Frely. Вы не открываете ни одного порта.
  3. Подключите FrelyMCP в ChatGPT, Claude или Codex — и ИИ сможет читать файлы и выполнять команды на этом сервере.

Что это меняет:

  • ИИ не получает ни одного долгоживущего ключа. У сервера есть собственная идентификация устройства, и команды, которые выполняет ИИ, не могут её прочитать.
  • По умолчанию команды выполняются в песочнице. Они могут писать только в выбранную вами папку и во временную папку, а папки с учётными данными, такие как ~/.ssh и ~/.aws, остаются недоступными для чтения. Если сервер не может запустить песочницу, команды отклоняются, а не выполняются без защиты.
  • Расширение доступа требует вашего подтверждения. ИИ запрашивает его, а вы на сайте Frely — с помощью passkey или кода аутентификатора — решаете, разрешить ли и на какой срок: одну команду, 12 часов или до окончания авторизации устройства. ИИ не может одобрить собственный запрос.
  • Отзыв в любой момент, действует немедленно. Каждый вызов заново проверяет авторизацию, поэтому первая же команда после отзыва будет отклонена.

Четыре привычки, которые делают это безопаснее

На сервере граница — это «системный пользователь, от имени которого работает Frely, плюс песочница». Эти решения определяют, насколько она прочна:

  1. Устанавливайте от имени отдельного пользователя, а не root. Например, создайте frely-ops и дайте ему доступ только к папке вашего приложения. Песочница ограничивает запись, но не то, что пользователь может читать, поэтому чем меньше прав у пользователя, тем лучше. Чтобы читать системные логи без root, добавьте пользователя в группы adm и systemd-journal.
  2. Проверьте, что песочница работает. На Linux установите bubblewrap, socat и ripgrep; frely doctor сообщит, доступна ли песочница. Старые системы вроде CentOS 7 не могут её запустить; там лучше подтверждать «выполнение без песочницы» на ограниченное время, а не оставлять это разрешение открытым.
  3. Открывайте только нужную папку. Задайте FRELY_WORKSPACE=/srv/myapp вместо того чтобы открывать всю домашнюю папку, и держите авторизацию устройства короткой.
  4. Знайте, что означает группа docker. Пользователь в группе docker может напрямую читать docker logs — это удобно, но такое членство даёт возможности уровня root.

Когда ssh всё ещё уместен

Если ИИ только читает логи и выполняет несколько команд, доступных только для чтения, путь через ваш ноутбук может быть допустим при условии, что:

  • вы создаёте отдельный ключ для этого сервера и ограничиваете его в authorized_keys на сервере с помощью from= и restrict, выполняя вход от имени пользователя с ограниченными правами;
  • в той же папке ~/.ssh не лежат другие ключи с большими полномочиями;
  • вы разрешаете доступ только под текущую задачу, а не на дни.

Коротко

Когда ИИ управляет вашими серверами, важнее не то, насколько он умён, а то, чем он располагает. Вместо того чтобы вручать ИИ ваши ключи, пусть сервер подключается сам, а вы подтверждайте, что ему можно делать.

Начните работу с Frely CLI

All posts