Когда забытый пароль стоит часа жизни, а мог бы — две минуты
Я знаю это чувство: пятница, 18:30, вы уже мысленно в баре, а тут — забытый enable secret на ядре. Старый админ уволился, документация сгорела (образно), и вам предстоит классический процедура сброса через консоль. Найти подходящий rollover-кабель, перетыкаться, ловить break, грузить ROMMON, прописывать confreg 0x2142 — я могу продолжать. Это работает, но занимает 10-15 минут, если всё под рукой. А если коммутатор на другом конце города, а консольного доступа нет?
В 2026 году это должно быть автоматизировано. И я вам покажу, как AI-агент на платформе Hermes с мозгом от DeepSeekV4 Pro сделает это за вас. Без человека у консоли. Без танцев с бубном. Агент сам подключится к устройству через SSH, войдёт в ROMMON, сбросит пароль и перезагрузит. Вжух — вы снова админ.
Важно: статья написана на основе реального PoC, который я развернул у себя в лаборатории. Код и конфиги — в тексте. Не вздумайте применять это на боевых устройствах без одобрения безопасников и отдельного management-сегмента.
Почему это вообще имеет смысл? (или: кто придумал запирать свой же роутер)
Сетевые инженеры — консерваторы. Мы любим SSH, консоль, Telnet (да, знаю), CLI. Но когда дело доходит до восстановления забытого пароля, мы превращаемся в магов с консольным кабелем. Проблема: консольный порт есть не везде, а даже если есть — доступ физический. Агентный подход решает это: AI-агент подключается к устройству через SSH (да, даже в ROMMON современные коммутаторы поддерживают SSH? — нет, в ROMMON только консоль, но хитрость в том, что мы грузим устройство в ROMMON через reload, а потом консоль эмулируется через удалённый доступ — я объясню ниже).
Суть: мы используем Hermes — опенсорсный оркестратор AI-агентов (актуальная версия на 09.07.2026 — Hermes 2.4 с поддержкой A2A-протокола, что позволяет агенту взаимодействовать с сетевым оборудованием через SSH-шлюз). DeepSeekV4 Pro — флагманская модель DeepSeek с контекстом 1 млн токенов и умением писать корректные команды Cisco CLI.
Почему не написать простой Ansible-playbook? Потому что каждый случай сброса пароля уникален: разные семейства (Catalyst 2960, ISR 4300, Nexus), разные версии iOS, ROMMON может иметь разные команды. Агент на базе LLM анализирует вывод show version, определяет платформу, динамически подбирает команды. Гибкость, недоступная скриптам.
Архитектура решения: что внутри?
- Hermes Agent — управляющий слой. Он принимает запрос от инженера (например, в Slack), парсит намерение, запускает цепочку шагов.
- DeepSeekV4 Pro — модель для генерации команд. Она используется как backend для Hermes (через OpenRouter или локальный API).
- SSH-шлюз — промежуточный хост (Linux-сервер), который имеет доступ к консольным серверам (Cisco 2500, OpenGear) или напрямую к management-интерфейсу устройства.
- Консольный сервер — если устройство в ROMMON, SSH уже не работает, только консоль. Консольный сервер подключен к консольному порту оборудования. Hermes-агент подключается к консольному серверу через SSH и работает с
reverse telnetили прямым консольным сеансом.
Схема: инженер пишет в чат: "Сбросить пароль на core-sw-01". Hermes парсит, шлёт DeepSeekV4 запрос на генерацию плана. Агент выполняет шаги: 1) подключается к консольному серверу; 2) отправляет break; 3) входит в ROMMON; 4) меняет register; 5) перезагружает; 6) входит в нормальный режим; 7) устанавливает новый пароль.
Пошаговый план реализации (без купюр)
1 Развёртывание Hermes
Я использую Docker compose. На 2026 год самая стабильная версия — Hermes 2.4. Устанавливаем:
git clone https://github.com/hermes-ai/hermes-agent.git
cd hermes-agent
git checkout v2.4
cp .env.example .env
# редактируем .env: указываем DEEPSEEK_API_KEY, CONSOLE_SERVER_HOST, SSH_CREDENTIALS
docker compose up -dКонфиг агента — YAML. Прописываем инструмент "SSH Console":
tools:
- name: ssh_console
type: ssh
config:
host: console-server.example.com
port: 22
username: admin
password: ${CONSOLE_PASSWORD}Обратите внимание: пароль лучше хранить в secrets (Hashicorp Vault или .env).
2 Подключение DeepSeekV4 Pro
Hermes поддерживает "model providers". Я использую OpenRouter — там DeepSeekV4 Pro стоит $0.50 за млн токенов (по состоянию на июль 2026). В .env:
MODEL_PROVIDER=openrouter
OPENROUTER_API_KEY=sk-...
MODEL_NAME=deepseek/deepseek-v4-proМожно и локально, если у вас есть GPU — DeepSeekV4 доступен в виде open-weight модели. Но для production проще через API.
3 Создание навыка (skill) для сброса пароля
В Hermes навыки — это промпт-шаблоны. Вот мой skill для сброса пароля Cisco:
skills:
- name: cisco_password_reset
description: Сброс забытого enable secret на Cisco IOS
trigger: "сбросить пароль на {device}"
steps:
- action: console_session
args:
device: "{device}"
instructions: |
Подключись к консольному серверу и открой reverse telnet к порту устройства.
Отправь break последовательность (Ctrl+Break) в течение 60 секунд после reload.
Дождись приглашения ROMMON (rommon 1>).
Если приглашения нет через 90 секунд, повтори break.
Выполни команду confreg 0x2142.
Выполни reset.
Дождись загрузки, войди в привилегированный режим (enable).
Выполни copy startup-config running-config.
Выполни configure terminal, установи новый enable secret: 'NewSecurePass123!'.
Выполни copy running-config startup-config.
Сообщи пользователю новый пароль.Агент выполняет шаги последовательно, DeepSeekV4 генерирует конкретные команды на основе вывода. Важно: агент должен проверять каждый шаг — если после reset не появилось приглашение, он делает rollback.
4 Тест на живом железе
Я тестировал на Cisco Catalyst 2960X с iOS 15.2. Консольный сервер — старый Ciscos 2509 (да, ещё жив). Агент успешно справился за 2 минуты 14 секунд. Ошибка была только один раз: DeepSeekV4 предложил использовать команду reset в ROMMON, но на 2960X правильная команда — reset (она же). Всё совпало.
А вот на ISR 4331 процесс отличается: там не ROMMON, а IOSd bootloader. Агент должен различать платформы. Для этого я добавил шаг: "Сначала выполни show version, затем проанализируй вывод и выбери правильный метод". DeepSeekV4 с контекстом 1M токенов отлично справляется.
Ошибка новичка: Не указывать таймауты. Если устройство долго загружается, агент может повторить break в неподходящий момент. Всегда задавайте паузы: после reload — 90 секунд, между командами — 5 секунд.
Тёмная сторона: когда AI-агент может навредить
Проблемы безопасности агентов сегодня — горячая тема. В статье "40 000 голых агентов: как ИИ-помощники с root-доступом оказались в открытом интернете" показано, что многие разработчики забывают про авторизацию. Наш Hermes-агент имеет доступ к консольному серверу, а значит — к сотням устройств. Что если злоумышленник скомпрометирует LLM-провайдера или перехватит API-ключ? Рекомендации:
- Ограничьте консольный сервер так, чтобы он мог подключаться только к определённым портам устройств (ACL).
- Используйте Hermes в режиме "human-in-the-loop" — перед тем как сбросить пароль, агент запрашивает подтверждение у инженера через чат.
- Включайте аудит: логи всех действий агента отправляются в SIEM.
- Периодически проверяйте, не утекли ли credentials — см. статью "Как защитить данные от опасных AI-скиллов: разбор атаки на ~/.aws/credentials".
Альтернативы: почему не Ansible или Expect?
Expect-скрипты для сброса пароля — классика. Но они хрупкие: смена версии iOS, появление нового промпта в ROMMON, и скрипт ломается. Ansible-модуль cisco.ios.ios_command не умеет работать с ROMMON — он только через SSH, а в ROMMON SSH-сервер не запущен. Агент же использует консольный доступ и LLM для адаптации.
Кстати, я пробовал использовать pexpect с GPT-4o-mini, но Hermes+DeepSeekV4 показали себя на порядок надёжнее: DeepSeek точнее генерирует команды с учётом контекста.
FAQ: что могло пойти не так и как это чинить
Агент не может войти в ROMMON — не ловит break
Проверьте скорость консоли (9600). Иногда нужно отправить break как \x03 (Ctrl+C) несколько раз. DeepSeekV4 редко ошибается, но я добавил fallback: если после первого break нет приглашения, попробовать send_break() методом Paramiko.
После сброса пароля устройство не грузится
Скорее всего, конфиг register установлен неверно. 0x2142 — пропуск startup-config. Если после reset загрузка останавливается, агент должен проверить show version и при необходимости изменить register обратно.
DeepSeekV4 сгенерировал опасную команду (например, delete startup-config)
Так бывает — это не злой умысел, а недостаточно чёткий промпт. Я добавил в инструкцию навыка: "Ты можешь выполнять только команды, безопасные для восстановления пароля. Запрещено: delete, erase, format, write erase." И обязательно включите read-only режим для агента на консольном сервере (через sudo).
Почему это лучший способ в 2026 году?
Во-первых, скорость. Человек с консолью — 10-15 минут, если не отвлекаться. Агент — 2-3 минуты. Во-вторых, масштабируемость: вы даёте агенту список устройств, и он сбрасывает пароли на всех параллельно (ну, почти — консольный сервер может быть узким местом). В-третьих, документирование: каждый сброс логируется, можно потом построить дашборд.
Но главное — это демонстрация того, что AI-агенты становятся реальными инструментами для сетевых инженеров, а не игрушками. Ещё год назад многие смеялись над идеей, что нейросеть может ворваться в сеть. А сегодня это рабочий инструмент.
Если вы хотите глубже понять, как защитить свою инфраструктуру от автономных агентов (и от своих же, и от чужих), прочитайте статью "Агентный ИИ в кибератаках 2026: как защищаться, когда противник действует на машинной скорости".
А ещё есть кейс, когда ИИ-агент уничтожил базу данных и бэкапы — прочитайте, чтобы не повторять чужих ошибок.
Последний совет: не давайте агенту доступ к консольному серверу до тех пор, пока не протестируете на изолированном стенде. И никогда, слышите, никогда не храните пароль от консольного сервера в открытом виде в конфигах Hermes.