SSH-доступ и SSH-ключи через AI-ассистента
Как ассистент получает прямой SSH-доступ, управляет ключами в аккаунте и на сервере и какие есть защиты.
На этой странице
AI-ассистент, подключённый через MCP (https://api.app.blackbox.md/mcp), может по вашей просьбе получить прямой SSH-доступ к вашим серверам и управлять SSH-ключами в аккаунте и на сервере. Доступ ассистенту даёт API-токен, созданный в разделе «Личный кабинет» → «API-токены» (blackbox.md/ru/account/api-tokens). Теми же ключами можно управлять и вручную: на странице «SSH-ключи» в личном кабинете и в карточке сервера на странице «Мои серверы» в панели app.blackbox.md.
Доступно: владельцу аккаунта blackbox.md — по API-токену с разрешениями из таблицы ниже. Серверные инструменты работают на серверах, которые вы заказали сами, и на серверах компании, на которые BLACKBOX выдал вам права управления. На серверах с отметкой «Обслуживается» в панели (только просмотр) они не работают — изменения на таких серверах запрашивайте у нас.
Инструменты и нужные разрешения
| Инструмент | Что делает | Разрешение | Лимит |
|---|---|---|---|
get_server_ssh_access |
выдаёт ключ агента и данные для SSH-подключения | servers:credentials |
10 за 5 минут |
list_ssh_keys |
показывает ключи, сохранённые в аккаунте | ssh_keys:read |
30 в минуту |
add_ssh_key |
сохраняет публичный ключ в аккаунте | ssh_keys:write |
10 в час |
delete_ssh_key |
удаляет ключ из аккаунта | ssh_keys:write |
20 в час |
add_server_ssh_key |
устанавливает ключ на сервер | servers:credentials |
10 за 5 минут |
list_server_ssh_keys |
показывает ключи, установленные на сервере | servers:credentials |
30 в минуту |
remove_server_ssh_key |
удаляет ключ с сервера | servers:credentials |
10 за 5 минут |
set_server_password_auth |
включает или отключает вход по паролю по SSH | servers:credentials |
5 за 5 минут |
- На странице токенов эти разрешения называются «Просматривать пароли/доступы к серверам» (
servers:credentials), «Читать список моих SSH-ключей» (ssh_keys:read) и «Добавлять и удалять мои SSH-ключи» (ssh_keys:write). Инструменты, для которых у токена нет разрешения, ассистенту не видны. Подробнее: Разрешения токенов (scopes). - Лимиты общие для всех токенов аккаунта и не зависят от лимитов панели. Все инструменты MCP вместе принимают не более 120 вызовов в минуту.
Прямой SSH-доступ для ассистента
get_server_ssh_access выдаёт ассистенту собственный SSH-ключ для сервера — ключ агента. BLACKBOX создаёт ключ Ed25519 с комментарием blackbox-agent-…, добавляет его в /root/.ssh/authorized_keys и возвращает вместе с данными для подключения.
Попросите ассистента, например: «Дай мне SSH-доступ к серверу
IP_СЕРВЕРА, хочу скопировать файлы через rsync».Ассистент вызывает
get_server_ssh_access. AI-клиент может попросить вас одобрить вызов.В ответе приходит:
Поле Содержимое host,port,usernameIP-адрес сервера, порт SSH и пользователь rootprivate_keyприватная часть ключа в формате OpenSSH, без парольной защиты public_key,fingerprintпубличная строка ssh-ed25519 … blackbox-agent-…и отпечатокSHA256:…ssh_commandготовая команда ssh -i <keyfile> -p ПОРТ root@IP; вместо<keyfile>подставьте путь к файлу с ключомcreated,rotated,previous_key_removedсоздан ли ключ только что, был ли он заменён и удалён ли старый
- Каждый вызов выдаёт один и тот же ключ и заново устанавливает его на сервер, если ключ тем временем удалили. На серверах, заказанных на blackbox.md, ключ агента обычно добавляется при создании сервера; если сервер тогда его не получил, ключ создаётся при первом вызове.
- На одном сервере только один ключ агента, общий для всех ваших токенов.
- С
regenerate=trueсоздаётся новый ключ, а старый удаляется с сервера. Если удалить старый не получилось, в ответе будетprevious_key_removed: false— тогда удалите в панели ключblackbox-agent-…, отпечаток которого не совпадает с отпечатком из ответа.
Для обычных команд ключ ассистенту не нужен: он пользуется run_server_command (Выполнение команд на сервере через AI). Ключ агента пригодится, чтобы копировать файлы через rsync или scp, работать в интерактивной сессии в собственном терминале и подключать инструменты, которым нужно настоящее SSH-соединение (например, VS Code Remote - SSH или Ansible). Сам ассистент может им воспользоваться, только если AI-клиент выполняет команды на вашем компьютере (например, Claude Code или Cursor); иначе он передаст ключ и команду вам.
Как подключиться с ключом агента из своего терминала
Явно попросите ассистента показать приватный ключ: по инструкции он не выводит пароли и ключи в переписку без прямой просьбы.
Скопируйте весь текст — от
-----BEGIN OPENSSH PRIVATE KEY-----до-----END OPENSSH PRIVATE KEY-----включительно — в новый файл, например~/.ssh/blackbox_agent. После последней строки нажмите Enter, чтобы файл заканчивался переводом строки, иначе SSH может ответитьinvalid format.В macOS и Linux ограничьте права на файл и подключитесь:
chmod 600 ~/.ssh/blackbox_agent ssh -i ~/.ssh/blackbox_agent -p 22 root@IP_СЕРВЕРАВ Windows проверьте, что у файла не появилось расширение
.txt. В PowerShell оставьте доступ к файлу только своему пользователю (иначе SSH может отклонить ключ с сообщениемUNPROTECTED PRIVATE KEY FILE) и подключитесь:icacls $env:USERPROFILE\.ssh\blackbox_agent /inheritance:r /grant:r "$($env:USERNAME):(R)" ssh -i $env:USERPROFILE\.ssh\blackbox_agent -p 22 root@IP_СЕРВЕРА
Копирование файлов с тем же ключом:
rsync -avz -e "ssh -i ~/.ssh/blackbox_agent" ./site/ root@IP_СЕРВЕРА:/var/www/site/
scp -i ~/.ssh/blackbox_agent backup.tar.gz root@IP_СЕРВЕРА:/root/Подробнее: Передача файлов на сервер (scp, rsync, SFTP). Для постоянного личного доступа установите свой ключ: ключ агента любой ассистент может в любой момент заменить через regenerate=true.
Ключи в аккаунте
list_ssh_keys, add_ssh_key и delete_ssh_key работают с теми же ключами, что и страница «SSH-ключи» (blackbox.md/ru/account/ssh-keys, «Личный кабинет» → «SSH-ключи»): ключ, добавленный ассистентом, появится там, и наоборот. Правила те же (SSH-ключи в аккаунте (blackbox.md)):
- не более 20 ключей на аккаунт (иначе
too_many_keys); - одна строка публичного ключа
ssh-ed25519,ssh-rsa(не короче 2048 бит),ecdsa-sha2-nistp256/384/521,sk-ssh-ed25519@openssh.comилиsk-ecdsa-sha2-nistp256@openssh.com(иначеinvalid_public_key,unsupported_key_typeилиkey_too_weak); - название обязательно, в одну строку, не длиннее 80 символов;
- приватный ключ не принимается (
private_key_submitted), как и уже сохранённый ключ (duplicate_key).
Пример: «Сохрани в моём аккаунте этот публичный ключ под названием „Рабочий ноутбук“». add_ssh_key не устанавливает ключ ни на один сервер — для этого ассистент затем вызывает add_server_ssh_key. И наоборот, delete_ssh_key удаляет ключ только из аккаунта: на серверах, где он установлен, ключ работает, пока вы не удалите его с каждого сервера.
Ключи на сервере
Эти инструменты используют управляющее подключение BLACKBOX — без вашего пароля и ключа. add_server_ssh_key, list_server_ssh_keys и remove_server_ssh_key работают с /root/.ssh/authorized_keys, как и раздел «Добавить SSH-ключ» в карточке сервера (Добавление и удаление SSH-ключей на сервере).
| Инструмент | Что передаёт ассистент | Результат |
|---|---|---|
add_server_ssh_key |
ключ из аккаунта (id из list_ssh_keys) или вставленную строку публичного ключа — что-то одно |
added или already_present (ключ уже был установлен, ничего не изменилось) |
list_server_ssh_keys |
сервер | тип, отпечаток и комментарий каждого ключа; is_management отмечает «Ключ управления (blackbox.md)», is_agent — ключ агента; плюс состояние входа по паролю (ssh_password_auth) |
remove_server_ssh_key |
отпечаток из list_server_ssh_keys, id ключа из аккаунта или строку публичного ключа — что-то одно |
removed или not_present (ключ не был установлен) |
set_server_password_auth |
enabled=false или enabled=true |
применённое состояние, effective: no или yes |
- Вставленный ключ устанавливается только на этот сервер и в аккаунте не сохраняется.
set_server_password_authделает то же, что кнопки «Отключить вход по паролю» и «Включить вход по паролю»: записывает настройки в файл в каталоге/etc/ssh/sshd_config.d/, проверяет их, перезагружает конфигурацию SSH и восстанавливает прежние настройки, если какой-то шаг не удался. Отметка в карточке меняется на «Только ключ» или «Пароль + ключ» (Включение и отключение входа по паролю по SSH). Просите ассистента пользоваться этим инструментом, а не правитьsshd_configкомандами.
Примеры: «Установи ключ „Рабочий ноутбук“ на сервер IP_СЕРВЕРА», «Какие SSH-ключи установлены на сервере IP_СЕРВЕРА?»
Защита от потери доступа
| Ситуация | Ошибка | Результат |
|---|---|---|
| удаление ключа управления | management_key_protected |
всегда отклоняется, как и в панели |
| на сервере компании: удаление ключа, которым управляет BLACKBOX | key_managed |
отклоняется; изменения запрашивайте у нас |
| удаление последнего ключа на сервере «Только ключ» | last_key_on_key_only_server |
отклоняется; сначала добавьте другой ключ или снова включите вход по паролю |
| отключение входа по паролю, когда на сервере не установлен ни один ваш ключ | no_customer_key_installed |
отклоняется; сначала установите ключ |
| на том же сервере уже идёт другое изменение ключей | operation_in_progress |
отклоняется; повторите через минуту |
Ассистенту предписано спрашивать подтверждение, прежде чем удалить ключ с сервера, отключить вход по паролю или заменить ключ агента. Но само окно подтверждения показывает AI-клиент — не отключайте в его настройках одобрение действий.
Важно Защита не заменяет собственную проверку. Прежде чем отключать пароль или удалять ключ, убедитесь в новом терминале, что входите со своим ключом, и не закрывайте текущую сессию. Веб- и VNC-консоли у клиентов нет; если доступ потерян, см. Потерян доступ к серверу (пароль или ключ).
Как отозвать SSH-доступ ассистента
Безопасность Приватный ключ из
get_server_ssh_accessдаёт доступroot— храните его как пароль. Он проходит через AI-клиент и его провайдера, как и любой результат инструментов. Не пересылайте его в мессенджерах и не сохраняйте в репозиториях кода.
- Отзовите токены, которыми больше не пользуетесь: «Личный кабинет» → «API-токены» → «Отозвать» (API-токены: создание, копирование и отзыв). Иначе любой токен с
servers:credentialsпри следующем вызове вернёт ключ на сервер. - Удалите ключ агента в панели: в карточке сервера «Добавить SSH-ключ» → «Установленные ключи» → строка с комментарием
blackbox-agent-…→ «Удалить», затем подтвердите. Появится сообщение «Ключ удалён.» (Ключи BLACKBOX на вашем сервере). - Если SSH-доступ ассистенту ещё нужен, попросите новый ключ с
regenerate=true. Вызов безregenerateвернул бы на сервер старый ключ.
Частые ошибки
| Ошибка | Что значит | Что делать |
|---|---|---|
missing_scope: this token does not have '…' |
у токена нет нужного разрешения | создайте новый токен с разрешением, указанным в ошибке |
not_found |
сервер или ключ не существует либо не принадлежит вашему аккаунту; тот же код приходит для серверов с отметкой «Обслуживается» | попросите ассистента сверить список серверов или ключей; по серверам «Обслуживается» напишите нам |
rate_limited |
превышен лимит инструмента | подождите, пока истечёт интервал из таблицы выше (не больше часа) |
ssh_connection_failed, ssh_key_push_failed, ssh_key_list_failed, ssh_key_remove_failed, password_auth_failed |
BLACKBOX не смог выполнить операцию на сервере: как правило, сервер остановлен, ещё загружается или с него удалён ключ управления | запустите сервер, подождите минуту и повторите; если ошибка не уходит, напишите нам: Как связаться с поддержкой BLACKBOX |
Полный список: Лимиты и коды ошибок MCP.
Частые вопросы
Почему ассистент говорит, что у него нет инструмента get_server_ssh_access?
У токена нет разрешения «Просматривать пароли/доступы к серверам» (servers:credentials). Добавить разрешение к существующему токену нельзя — создайте новый.
Я удалил ключ агента в панели, а он появился снова. Почему?
Ассистент с токеном, у которого есть servers:credentials, снова запросил SSH-доступ, и get_server_ssh_access вернул тот же ключ на место. Отзовите неиспользуемые токены или запросите новый ключ с regenerate=true.
Работает ли доступ через ассистента на сервере «Только ключ»? Да. Ключ агента устанавливается через управляющее подключение BLACKBOX, а вход по ключу работает и при отключённом входе по паролю.