ssh-commander: локальная панель управления VPS с встроенным ИИ-агентом

Habr AI · оригинал

Материал подготовлен автоматизированной редакционной системой. Факты можно сверить по указанному первоисточнику.

Разработчик представил open-source инструмент ssh-commander, объединяющий терминал, файловый менеджер и управление Docker в едином веб-интерфейсе. Ключевой особенностью приложения является интеграция ИИ-агента, который помогает анализировать логи и конфигурации, но выполняет изменения только после подтверждения пользователем.

Инструмент предлагает безопасный подход к автоматизации серверных задач, где ИИ выступает ассистентом, а не автономным исполнителем, что снижает риски при работе с продакшен-окружениями.

Разработчик представил ssh-commander — локальное приложение для администрирования Linux-серверов, которое объединяет в одном окне терминал, файловый менеджер по SFTP и панель управления Docker. Проект позиционируется как инструмент для тех, кто хочет контролировать процесс работы с сервером, но нуждается в помощи при анализе сложных конфигураций или поиске ошибок. Код доступен под лицензией MIT, а запуск осуществляется через Docker Compose, что позволяет развернуть панель на любом устройстве с доступом к сети.

Архитектура приложения построена вокруг концепции «человек в контуре». Пользователь может работать с сервером вручную, используя привычные инструменты: несколько вкладок терминала, редактор файлов с подсветкой синтаксиса и просмотр логов. При необходимости можно передать фрагмент вывода или лог ИИ-агенту, который проанализирует данные и предложит решение. В отличие от автономных агентов, ssh-commander требует явного подтверждения для любых изменяющих операций: записи файлов, перезапуска контейнеров или выполнения произвольных shell-команд.

Для повышения безопасности разработчик отказался от использования «черного списка» запрещенных команд, так как при тестировании были обнаружены способы обхода фильтров (например, использование альтернативных путей к утилитам). Вместо этого реализован механизм белого списка для операций чтения через специальный инструмент exec_readonly. Этот режим позволяет агенту безопасно просматривать файлы и логи, но запрещает выполнение конвейеров, перенаправлений и подстановок. Любые сложные или потенциально опасные действия требуют ручного одобрения пользователем, который видит полную команду перед ее запуском.

Приложение обладает функцией памяти для каждого сервера: агент использует локальный файл MEMORY.md, в котором хранятся заметки о структуре проектов и способах запуска сервисов. Это позволяет модели быстрее ориентироваться в контексте при последующих сессиях. Также предусмотрена возможность подключения нескольких серверов к одному диалогу, при этом каждая команда четко привязана к конкретной машине, что упрощает работу с распределенными системами.

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

Разработчик честно указывает на ограничения инструмента. ИИ может предлагать неверные команды, поэтому проверка результата остается обязанностью администратора. Кроме того, при работе с внешними провайдерами LLM данные логов передаются третьим лицам, а защита от prompt injection (внедрения вредоносных инструкций в файлы) не является абсолютной. Панель рассчитана на одного пользователя и по умолчанию доступна только через localhost, защищаясь паролем. Секреты, такие как SSH-ключи и API-токены, хранятся локально в открытом виде, что требует от пользователя защиты каталогов данных.

Для запуска ssh-commander необходимы Docker с поддержкой Compose v2 и SSH-доступ к целевому серверу. Интерфейс открывается в браузере по адресу localhost:8080. Пользователь должен задать пароль для доступа к панели и добавить API-ключ выбранного ИИ-провайдера (поддерживаются OpenAI-совместимые API). Расходы на использование модели тарифицируются провайдером, а в приложении реализован учет токенов для контроля затрат. Проект написан на TypeScript, Node.js и React, исходный код доступен в репозитории GitHub.