FRELY / BLOG
Позвольте ИИ помогать управлять серверами, не отдавая ему ваши SSH-ключи
Всё больше людей позволяют ИИ-ассистенту читать логи, править конфиги и перезапускать сервисы. Очевидный способ — запустить ИИ, который может выполнять команды на вашем собственном компьютере, и разрешить ему заходить на сервер по ssh.
Это работает. Но стоит задержаться на одной детали: чтобы ИИ мог выполнять ssh, вы отдаёте ему всю свою папку ~/.ssh.
Через ваш ноутбук: вы отдаёте больше, чем думаете
Чтобы ИИ выполнил ssh prod на вашем компьютере, ему нужно прочитать конфиг и приватные ключи в ~/.ssh. Большинство средств управления доступом умеют лишь определять, доступна ли папка для чтения. Они не могут сказать «только этот один сервер». Это значит:
- Он может прочитать все приватные ключи, а не только ключ для этого сервера.
- Пока его команды могут обращаться к сети, ключ может покинуть ваш компьютер. Утёкший ключ продолжает действовать. Отключение доступа ИИ впоследствии не вернёт ключ; придётся удалить публичный ключ с каждого сервера.
- После входа по
sshто, что ИИ может делать на сервере, зависит от аккаунта, за которым стоит этот ключ. Если это root, у ИИ есть root.
В логе сервера видна только запись «ваш ноутбук вошёл с вашим ключом». Отличить ваши команды от команд ИИ он не может.
Наоборот: пусть сервер подключается сам
Вместо того чтобы давать ИИ ключ от двери сервера, установите на сервере небольшую программу. Сервер сам подключается к вашему аккаунту, а вы решаете, что ИИ там разрешено делать.
С Frely это выглядит так:
- На сайте Frely откройте My Devices → Add a computer («Мои устройства» → «Добавить компьютер») и создайте одноразовую команду установки. Вставьте её на сервере. Токен срабатывает один раз, истекает через 15 минут и не сохраняется на сервере.
- Сервер сам подключается к Frely. Вы не открываете ни одного порта.
- Подключите FrelyMCP в ChatGPT, Claude или Codex — и ИИ сможет читать файлы и выполнять команды на этом сервере.
Что это меняет:
- ИИ не получает ни одного долгоживущего ключа. У сервера есть собственная идентификация устройства, и команды, которые выполняет ИИ, не могут её прочитать.
- По умолчанию команды выполняются в песочнице. Они могут писать только в выбранную вами папку и во временную папку, а папки с учётными данными, такие как
~/.sshи~/.aws, остаются недоступными для чтения. Если сервер не может запустить песочницу, команды отклоняются, а не выполняются без защиты. - Расширение доступа требует вашего подтверждения. ИИ запрашивает его, а вы на сайте Frely — с помощью passkey или кода аутентификатора — решаете, разрешить ли и на какой срок: одну команду, 12 часов или до окончания авторизации устройства. ИИ не может одобрить собственный запрос.
- Отзыв в любой момент, действует немедленно. Каждый вызов заново проверяет авторизацию, поэтому первая же команда после отзыва будет отклонена.
Четыре привычки, которые делают это безопаснее
На сервере граница — это «системный пользователь, от имени которого работает Frely, плюс песочница». Эти решения определяют, насколько она прочна:
- Устанавливайте от имени отдельного пользователя, а не root. Например, создайте
frely-opsи дайте ему доступ только к папке вашего приложения. Песочница ограничивает запись, но не то, что пользователь может читать, поэтому чем меньше прав у пользователя, тем лучше. Чтобы читать системные логи без root, добавьте пользователя в группыadmиsystemd-journal. - Проверьте, что песочница работает. На Linux установите
bubblewrap,socatиripgrep;frely doctorсообщит, доступна ли песочница. Старые системы вроде CentOS 7 не могут её запустить; там лучше подтверждать «выполнение без песочницы» на ограниченное время, а не оставлять это разрешение открытым. - Открывайте только нужную папку. Задайте
FRELY_WORKSPACE=/srv/myappвместо того чтобы открывать всю домашнюю папку, и держите авторизацию устройства короткой. - Знайте, что означает группа docker. Пользователь в группе
dockerможет напрямую читатьdocker logs— это удобно, но такое членство даёт возможности уровня root.
Когда ssh всё ещё уместен
Если ИИ только читает логи и выполняет несколько команд, доступных только для чтения, путь через ваш ноутбук может быть допустим при условии, что:
- вы создаёте отдельный ключ для этого сервера и ограничиваете его в
authorized_keysна сервере с помощьюfrom=иrestrict, выполняя вход от имени пользователя с ограниченными правами; - в той же папке
~/.sshне лежат другие ключи с большими полномочиями; - вы разрешаете доступ только под текущую задачу, а не на дни.
Коротко
Когда ИИ управляет вашими серверами, важнее не то, насколько он умён, а то, чем он располагает. Вместо того чтобы вручать ИИ ваши ключи, пусть сервер подключается сам, а вы подтверждайте, что ему можно делать.