1Password SSH Agent and CLI: Read-Only AI Agent Access
Table of Contents
Агенту командной строки нужен полезный доступ, а не копия всех учётных данных. В этом руководстве представлена ограниченная по объёму модель для 1Password CLI, агента SSH 1Password, доступа к Bitbucket Git и протокола контекста модели (MCP). Первый рабочий процесс использует синтетические имена, действия только на чтение и одобрение человеком на границе SSH.
Ключевое различие просто. Интерактивный SSH использует согласие через агента SSH 1Password. Автоматизация без участия человека требует отдельной учётной записи, узкого доступа и другого жизненного цикла ключей. Не рассматривайте подключение MCP как разрешение на выполнение любого из этих рабочих процессов.
Ключевые выводы
- Защита закрытого ключа: Агент SSH 1Password выполняет аутентификацию SSH, сохраняя закрытые ключи внутри приложения 1Password.
- Обработка открытого ключа: Публикуйте только открытый ключ в Bitbucket или удалённую учётную запись. Храните закрытую часть в элементе SSH Key.
- Интерактивное согласие: Человек одобряет клиент или сеанс терминала перед тем, как агент SSH использует ключ.
- Разделение для автоматизации: Периодическая задача требует выделенной учётной записи службы и узкого объёма хранилища. Одобрение интерактивного агента SSH не удовлетворяет этому требованию.
- Границы MCP: MCP подключает агента к инструментам и ресурсам. Клиент, сервер, операционная система и политика 1Password по-прежнему контролируют доступ.
Перед началом
Предварительные требования: Установите 1Password 8 и 1Password CLI версии 2.20.0 или новее. Войдите через поддерживаемую учётную запись 1Password. Используйте клиент OpenSSH. Создайте тестовый репозиторий Bitbucket или другую целевую систему, не являющуюся продуктивной. Обеспечьте наличие второго административного пути для отката.
Время: 30–45 минут на обзор дизайна и синтетическую демонстрацию.
Сложность: Средняя. Требуется базовое знание Git, SSH, оболочки и управления доступом.
Это руководство охватывает проектирование и планирование. Связанная статья о Bitbucket описывает специфические для Bitbucket границы доступа. Это руководство не тестирует живую учётную запись, не создаёт реальный ключ, не подключается к реальному хосту и не регистрирует реальный сервер MCP. Все идентификаторы ниже являются синтетическими. Заменяйте плейсхолдеры только в собственной контролируемой среде.
Позиция по версиям: Используйте 1Password 8 и 1Password CLI версии 2.20.0 или новее для этого рабочего процесса. 1Password CLI 1 устарел . 1Password 7 будет прекращён в начале 2027 года . Генерация, импорт и обмен SSH-ключами требуют 1Password 8. Перед тестированием проверьте установленные версии Git, OpenSSH, хоста MCP и сервера MCP. Примеры ниже остаются непроверенными.
Хранилище (vault) — это защищённая коллекция элементов в 1Password. OpenSSH — это программное обеспечение клиента и сервера SSH, используемое многими операционными системами. MCP (Model Context Protocol) — протокол, который подключает агента к одобренным инструментам или ресурсам.
Почему приватные ключи должны оставаться нечитаемыми
Пара SSH-ключей состоит из открытого и приватного ключей. Удалённый Git-сервис или сервер хранит открытый ключ. Клиент подтверждает владение приватным ключом во время аутентификации. Приватный ключ не должен передаваться на удалённый сервис.
1Password SSH Agent расширяет эту модель. В его документации указано, что SSH- и Git-клиенты аутентифицируются через агента, тогда как приватный ключ остаётся в приложении 1Password. Клиент получает результат подписи, а не файл приватного ключа.
Эта граница снижает несколько путей утечки:
- Системы контроля версий: Приватный ключ не попадает в репозиторий или pull request.
- История командной строки: Значение приватного ключа не появляется в аргументах команд.
- Временные файлы: Скрипту не нужно записывать приватный ключ в
~/.ssh/. - Контекст агента: Большой языковой модели (LLM) не нужен текст приватного ключа для запроса SSH-операции.
- Случайное повторное использование: Скопированный ключ не остаётся в старой рабочей области после завершения задачи.
Эта граница не делает SSH безопасным. Процесс, имеющий разрешение на использование сокета агента, может выполнять действия от имени одобренного ключа. Проверка хост-ключей, ограничения удалённых учётных записей, разрешения репозитория, политика команд и изоляция процессов по-прежнему важны.
Граница приватного ключа защищает ключевой материал. Эта граница не одобряет удалённую команду и не доказывает, что целевой хост доверен.
Интерактивное согласие для SSH
Настройте отдельное хранилище для ключей агента. Используйте файл конфигурации SSH Agent для выбора минимального набора ключей и ключа, специфичного для хоста. Не предоставляйте автоматизированному процессу доступ ко всем подходящим ключам из всех встроенных хранилищ.
Модель безопасности 1Password SSH Agent связывает одобрение с конкретным ключом и запрашивающим процессом. В запросе указывается процесс и ключ. Затем пользователь одобряет запрос через настроенный метод аутентификации.
1Password документирует несколько областей действия одобрения. По умолчанию действует одобрение по ключу и по приложению. Область действия сессии терминала сужает одобрение до вкладки или сессии. Одобрение по запросу запрашивает подтверждение для каждого запроса. Существует вариант одобрения для всех процессов, но этот вариант предоставляет всем процессам под текущим пользователем операционной системы доступ на время сессии.
Используйте наиболее узкий диапазон утверждения, подходящий для задачи. Агент системного администрирования должен работать в выделенном терминале или песочнице. Не утверждайте каждый процесс, если достаточно одной сессии терминала.
Сессия утверждения не является постоянным разрешением. 1Password фиксирует авторизацию на настроенный период или до блокировки или закрытия приложения. Когда приложение заблокировано, агент не сохраняет закрытые ключи для последующего использования. Процесс SSH Agent продолжает работать в фоновом режиме, если соответствующая настройка включена, даже когда 1Password закрыт, но для нового запроса на подпись требуется разблокировка 1Password.
Руководство по настройке SSH в 1Password демонстрирует общий процесс: генерация или импорт ключа, публикация открытого ключа, включение SSH Agent, настройка SSH-клиента, выполнение команды SSH или Git и утверждение запроса. Точный путь сокета различается в зависимости от операционной системы. Используйте инструкции для текущей платформы, а не копируйте путь с другого компьютера.
Приложение 1Password должно быть разблокировано, чтобы новый запрос на подпись был успешным. Процесс агента может продолжать работать в фоновом режиме, пока приложение закрыто. Заблокированное приложение не предоставляет материал закрытого ключа для подписи.
Открытые ключи и Bitbucket
Руководство по управлению ключами 1Password
описывает элементы SSH Key, генерацию ключей, импорт ключей, открытые ключи, отпечатки и закрытые ключи. В примере CLI используется op item create --category ssh для создания элемента SSH Key. 1Password CLI по умолчанию генерирует ключ Ed25519 для этого примера и скрывает закрытый ключ в своем выводе.
Bitbucket Cloud использует стандартный рабочий процесс командной строки Git и OpenSSH. Его руководство по командной строке описывает операции Git из локального репозитория. Его руководство по настройке SSH перечисляет формы SSH-удаленных подключений и поддерживаемые форматы открытых ключей.
Рассматривайте Bitbucket как потребителя открытых ключей. Зарегистрируйте открытый ключ или отпечаток через одобренный аккаунт Bitbucket или настройку репозитория. Храните закрытый ключ в 1Password. Git-клиент просит SSH Agent подписать. Клиент не читает файл закрытого ключа.
Для области действия ключа доступа Bitbucket, пути регистрации и теста Git только для чтения см. SSH-ключи и Git CLI в Bitbucket Cloud: Доступ только для чтения для ИИ-агентов .
Документация Bitbucket называет это рабочим процессом Git CLI. Эта статья не предполагает отдельный MCP-сервер Bitbucket или продукт с названием Bitbucket CLI. Специфичный для Bitbucket CLI требует своей актуальной документации и собственного пересмотра разрешений.
Граница между агентом и MCP
Используйте текущую спецификацию MCP при проверке нового сервера.
URL спецификации от 18.06.2025 в следующем абзаце с контекстом является исторической версией. Для новых проверок используйте спецификацию от 28.07.2026.
Стандарт MCP стандартизирует соединения между LLM-приложением, клиентским коннектором и сервером. Сервер предоставляет инструменты, ресурсы или промпты. Спецификация также указывает, что хосты должны получать согласие пользователя перед раскрытием данных или вызовом инструментов.
Сам по себе MCP не предоставляет разрешений. Инструмент MCP по-прежнему выполняется в рамках разрешений процесса сервера, пользователя операционной системы, сетевого пути, облачного аккаунта и настроенных учетных данных. Описание инструмента не является политикой авторизации.
Документация 1Password Security for AI описывает Environments MCP Server и безопасные паттерны конфигурации MCP. На той же странице описывается загрузка значений конфигурации MCP из 1Password во время выполнения. Эти страницы не определяют универсальный продукт 1Password SSH-key MCP или универсальный рабочий процесс SSH для каждого клиентского приложения агента.
Используйте MCP как узкую поверхность управления:
- Инструменты чтения: Осмотр состояния службы, метаданных репозитория или одобренных журналов.
- Инструменты планирования: Подготовка команды или записи об изменении без выполнения команды.
- Инструменты утверждения: Запрос решения человека перед удаленной записью.
- Инструменты записи: Оставаться отключенными, пока цель, команда, область действия и план отката не будут явно определены.
Агент должен получать ссылки, метаданные и результаты операций. Агент не должен получать текст закрытого ключа, дамп всех элементов хранилища или неограниченную оболочку.
Безопасная начальная политика
Начните с письменной политики перед включением агента. Держите политику вблизи конфигурации MCP, но не размещайте учетные данные в файле.
agent_policy:
purpose: "Read-only repository and system inspection"
identities:
interactive_ssh: "1Password SSH Agent with per-terminal consent"
unattended_jobs: "Dedicated service account with one narrow vault"
allowed:
- "Read repository metadata through Git"
- "Read approved service status and logs"
- "Run one synthetic SSH connectivity check"
approval_required:
- "Any remote write"
- "Any package, firewall, clock, or service change"
- "Any new host-key acceptance"
- "Any private-key export"
denied:
- "Read or print private-key fields"
- "List every vault or every item"
- "Write tokens or secrets to shell profiles"
- "Run arbitrary commands from tool output"
rollback:
- "Revoke the service account"
- "Remove the public key from the target"
- "Disable the MCP server entry"
- "Lock 1Password and end the agent session"
Эта политика является примером, а не форматом конфигурации 1Password. Храните реальную политику в плоскости управления, используемой вашим клиентским приложением агента. Проверяйте каждый инструмент на соответствие политике перед включением каждого инструмента.
Служебные учетные записи и ссылки на секреты
Служебная учетная запись предоставляет автоматизированному процессу собственную идентичность. Руководство по скриптам 1Password CLI рекомендует использовать служебные учетные записи для доступа с наименьшими привилегиями к выбранным хранилищам. Это отделяет автономную задачу от SSO, MFA, инвентаризации хранилища и ежедневного аккаунта человека.
Секретная ссылка указывает на значение, не размещая само значение в исходном коде. В
справочнике 1Password CLI
используется форма op://vault/item/field. Ссылка безопасна для хранения только в том случае, если окружающий процесс по-прежнему имеет ограниченный доступ. Ссылка не обходит политику безопасности.
Используйте op read, когда одной команде требуется одно значение. Используйте op run, когда дочернему процессу требуется контролируемый набор значений времени выполнения. Используйте op item create, когда новый элемент SSH Key должен существовать в утверждённом хранилище.
Не путайте внедрение во время выполнения с защитой закрытого ключа. Токен API, переданный в качестве переменной окружения, по-прежнему виден дочернему процессу. Передача закрытого ключа через переменную окружения ещё хуже, поскольку это расширяет область воздействия на инспекцию процессов, отчёты об ошибках, отладочный вывод, трассировку оболочки и случайное журналирование.
Предпочитайте ссылку в исходном коде и значение времени выполнения в максимально возможном узком процессе. Держите процесс короткоживущим. Отключите трассировку оболочки. Не выводите переменные окружения. Удаляйте временные файлы после неудачного запуска.
Безопасный начальный рабочий процесс
Нижеприведённая последовательность разделяет регистрацию открытого ключа, интерактивный SSH, обнаружение MCP и автономный дизайн.
1. Определите целевой объект
Запишите класс целевого объекта, удалённую учётную запись, целевой репозиторий или команду, источник ключа хоста, владельца утверждения и действие отката. Во время первого упражнения используйте синтетическую запись.
target_class: test-repository
remote_account: git
operation: read-only connectivity check
host_key_source: approved administrator record
approval_owner: named operator
rollback: remove public key and revoke test identity
Ожидаемый результат, непроверенный: Запись идентифицирует один целевой объект и одну операцию. Запись не содержит имени хоста, IP-адреса, токена, закрытого ключа или персональных данных.
2. Создайте или выберите элемент SSH Key
В официальном руководстве по SSH-ключам 1Password задокументирован шаблон создания через CLI. Команда ниже использует синтетический заголовок и именованное тестовое хранилище.
op item create --category ssh --ssh-generate-key=ed25519 --vault "synthetic-test-vault" --title "synthetic-agent-admin-key"
Ожидаемый вывод, непроверенный: 1Password создаёт элемент SSH Key в именованном тестовом хранилище и маскирует закрытый ключ в выводе терминала. Команда изменяет состояние 1Password. Точный человекочитаемый вывод зависит от версии CLI и состояния входа.
Запишите возвращаемый идентификатор элемента в тестовой записи, не копируя поле закрытого ключа. Используйте идентификатор или точный заголовок элемента для последующих чтений конкретных полей только после подтверждения схемы элемента.
Не перенаправляйте этот вывод в общий журнал. Записывайте только идентификатор элемента, отпечаток открытого ключа и запись об утверждении, если локальная процедура поддерживает безопасный структурированный вывод.
3. Обработка открытого ключа
Откройте элемент «SSH Key» в 1Password и используйте действие «Copy Public Key». Используйте ссылку на конкретное поле только после того, как вы подтвердите метку поля публичного ключа в вашем собственном аккаунте. Не выгружайте весь элемент целиком.
PUBLIC_KEY_REF="op://synthetic-test-vault/synthetic-agent-admin-key/synthetic-public-key-field"
op read "$PUBLIC_KEY_REF"
Ожидаемый результат, не проверено: Одна синтетическая строка публичного ключа OpenSSH или значение публичного ключа из подтверждённого поля. Имя поля-заглушки выше не является гарантией метки поля в вашем элементе.
Зарегистрируйте публичный ключ в утверждённом аккаунте Bitbucket, репозитории Bitbucket или удалённом аккаунте. Никогда не вставляйте соответствующий приватный ключ в Bitbucket. Руководство Bitbucket по SSH также рекомендует записывать хост-ключ Bitbucket перед первым подключением.
Для Bitbucket получите опубликованную запись хост-ключа и сравните её с независимым доверенным экземпляром перед добавлением строки в ~/.ssh/known_hosts. Используйте строгую проверку хоста после успешного сравнения. Не принимайте изменённый хост-ключ во время выполнения агента.
4. Включение интерактивного SSH
Включите SSH-агент 1Password в настольном приложении. Настройте OpenSSH с использованием значения IdentityAgent или SSH_AUTH_SOCK, специфичного для вашей платформы, из
официального руководства по настройке
. Ограничьте первый тест одним репозиторием или одним непродуктовым аккаунтом.
На macOS или Linux установите сокет из руководства по настройке для вашей платформы и выполните ssh-add -l. На Windows используйте поддерживаемую конфигурацию именованного канала и проверьте доступные ключи через интерфейс SSH-агента 1Password или задокументированный тест SSH для Windows. Не представляйте ssh-add -l как кроссплатформенную команду проверки.
Только для macOS или Linux:
ssh-add -l
git ls-remote "<repository-ssh-url>" HEAD
Ожидаемый результат, не проверено: На macOS или Linux ssh-add -l выводит отпечатки от активного агента. На Windows используйте задокументированный тест именованного канала или интерфейс SSH-агента 1Password. Успешное чтение Git возвращает ссылку на коммит. Заглушка репозитория выше требует замены в контролируемом тесте.
Команда использует заглушку репозитория. Заменяйте заглушку только в контролируемом тесте. Не одобряйте запрос для целевого объекта или процесса, который вы не ожидали.
5. Добавление MCP после работы SSH-пути
Сначала проверьте SSH-клиент и целевой объект без MCP. Затем добавьте один сервер MCP или локальный коннектор только для чтения. Предоставьте агенту инструмент, такой как read_status или prepare_command. Не начинайте с общего инструмента оболочки.
Конфигурация MCP должна ссылаться на значения времени выполнения через поддерживаемый клиентом механизм переменных окружения. Руководство по безопасности 1Password AI описывает замену токенов конфигурации MCP в открытом виде переменными окружения, загружаемыми из 1Password. Сохраняйте ссылку или имя переменной в конфигурации. Не сохраняйте разрешённое значение в транскрипте агента.
В этом разделе описывается проект, а не протестированная конфигурация MCP. Здесь не зафиксированы ни клиент, ни сервер, ни транспорт, ни версия, ни тестовые данные. Перед подключением агента к производственной системе проверьте один сервер только для чтения в отдельном тестовом профиле.
6. Запись результата
Зафиксируйте целевой класс, имя инструмента, решение об одобрении, отпечаток публичного ключа, результат команды и результат очистки. Исключите секретные значения. Отметьте каждый вывод как наблюдаемый или ожидаемый.
Ожидаемый результат, не протестирован: Агент считывает статус, предлагает ограниченную команду, получает явное одобрение запроса SSH, завершает операцию только для чтения и формирует запись без текста приватного ключа.
Синтетическая последовательность команд
Следующая последовательность показывает порядок действий без использования реальной инфраструктуры. Эти команды приведены только в качестве примеров. Они не выполнялись при подготовке статьи.
op --version
op item create --category ssh --ssh-generate-key=ed25519 --vault "synthetic-test-vault" --title "synthetic-agent-admin-key"
op read "op://synthetic-test-vault/synthetic-agent-admin-key/synthetic-public-key-field"
# macOS or Linux only
ssh-add -l
git ls-remote "<repository-ssh-url>" HEAD
Ожидаемый вывод, не протестирован:
2.x.y
SSH Key item created. Private key: redacted
ssh-ed25519 AAAA<synthetic-public-key> synthetic-key-label
256 SHA256:<synthetic-fingerprint> synthetic-agent-admin-key (ED25519)
<synthetic-commit-id> HEAD
Блок вывода является иллюстративным. Блок не представляет собой результат выполнения в отношении учётной записи 1Password, Bitbucket, провайдера Git или удалённого хоста. В производственной записи следует хранить только одобренные метаданные и состояние успеха или сбоя.
Интерактивный и автономный доступ
| Режим доступа | Идентичность | Путь к приватному ключу | Модель одобрения |
|---|---|---|---|
| Интерактивный SSH | Учётная запись человека через 1Password SSH Agent | Приватный ключ остаётся в приложении 1Password | Человек одобряет процесс, сеанс терминала или запрос |
| Плановое чтение | Выделенная сервисная учётная запись | op run предоставляет узкие значения времени выполнения |
Политика задания и область действия сервисной учётной записи |
| Плановый SSH | Выделенная идентичность автоматизации | Экспорт ключа остаётся решением последней инстанции | Изоляция задания, короткий срок жизни, ограничение хоста и ротация |
| Запись агентом | Идентичность человека или специфичная для задачи | Зависит от одобренной интеграции | Одобрение человеком перед каждым определённым изменением |
Не планируйте рабочий процесс вокруг запроса интерактивного SSH Agent. Используйте отдельный проект автоматизации или сохраняйте шаг управляемым человеком.
Для автономных задач создайте служебную учетную запись с доступом к одному хранилищу или небольшому набору элементов. Назначьте задаче одну конкретную цель. Используйте отдельный репозиторий или учетную запись сервера. Добавьте проверку ключей хоста. Установите тайм-аут выполнения. Записывайте метаданные действий без секретов. После тестирования обновите или отзовите учетные данные.
Если автономной задаче действительно требуется закрытый ключ SSH, используйте отдельный ключ автоматизации с узкой учетной записью на удаленном сервере и задокументированной датой окончания действия. Получение закрытого ключа с помощью op read по-прежнему экспортирует материал ключа через границу процесса. Такой подход имеет более широкий радиус поражения, чем 1Password SSH Agent. Если целевая система поддерживает это, предпочтительнее использовать идентификатор платформы, службу развертывания или другой идентификатор рабочей нагрузки.
Почему переменные окружения в открытом виде повышают риски
Переменные окружения исключают секреты из исходных файлов, но не делают их невидимыми. Дочерний процесс считывает свое окружение. Инспекция процессов, обработчики аварийных ситуаций, отладочный вывод, трассировка оболочки и скопированные записи команд могут раскрыть значения.
1Password документирует op run как метод выполнения для загрузки ссылок в дочерний процесс. Используйте op run для значений, которые процессу действительно необходимы. Держите дочерний процесс кратковременным и ограничивайте его команду. Не передавайте закрытый ключ через SSH_PRIVATE_KEY, KEY или аналогичную переменную, если SSH Agent устраняет необходимость в экспорте.
Более безопасный порядок действий:
- Используйте SSH Agent для интерактивного SSH.
- Используйте регистрацию открытого ключа для Bitbucket или удаленной учетной записи.
- Используйте
op runдля узкого автономного дочернего процесса. - Используйте
op readдля одного значения, если дочернему процессу не нужен полный набор переменных окружения. - Экспортируйте закрытый ключ только после письменного исключения, узкого охвата, плана очистки и плана ротации.
Таблица решений
| Потребность | Предпочтительный путь | Причина для остановки или перепроектирования |
|---|---|---|
| Человек выполняет Git через SSH | 1Password SSH Agent | Остановиться, если в запросе указано неожиданный процесс или ключ |
| Регистрация ключа репозитория | Чтение или автозаполнение публичного ключа | Никогда не копировать приватный ключ в сервис репозитория |
| Агент читает статус сервиса | Инструмент MCP только для чтения с ОС-уровнем области действия | Остановиться, если инструмент предоставляет неограниченную оболочку |
| Агент предлагает удаленное изменение | Инструмент планирования с последующим одобрением человеком | Остановиться, если цель, команда или откат неясны |
| Задача читает один API-токен | Сервисная учетная запись плюс op read или op run |
Остановиться, если токен попадает в исходный код, журналы или глобальный профиль |
| Задаче нужен доступ по SSH | Идентичность рабочей нагрузки или выделенный ключ автоматизации | Остановиться, если задача требует личного ключа или широкой учетной записи |
| Конфигурация MCP требует токен | Ссылка времени выполнения, загружаемая поддерживаемым клиентом | Остановиться, если токен в открытом виде закоммичен в конфигурацию |
Обработка сбоев
Неожиданный запрос согласия SSH: Отклонить запрос. Проверить имя процесса, сеанс терминала, отпечаток ключа, цель репозитория и хост-ключ. Просмотреть конфигурацию SSH-клиента перед повторной попыткой.
Нет сокета SSH Agent: Убедиться, что настольное приложение 1Password установлено поддерживаемым способом, SSH Agent включен, а клиент использует специфичный для платформы сокет. На официальной странице SSH Agent перечислены требования к операционным системам и ссылки на настройку сокетов.
Сбой аутентификации по публичному ключу: Проверить выбранный публичный ключ, удаленную учетную запись, права доступа к репозиторию, хост-ключ и конфигурацию SSH. Использовать сравнение публичных отпечатков. Не устранять ошибку путем экспорта нерелевантного приватного ключа.
op read отказывает в доступе: Проверить область действия хранилища сервисной учетной записи, идентификатор элемента, ссылку на поле, состояние входа и статус элемента. Свести ссылку к одному одобренному элементу. Не расширять права доступа к хранилищу как первую реакцию.
op run раскрывает значение: Остановить задачу. Сохранить только минимальную запись об инциденте. Удалить скопированные журналы и временные файлы в соответствии с процедурой хранения. Сменить затронутый секрет или ключ. Просмотреть трассировку оболочки, инспекцию процессов, отчеты об ошибках и хранение транскриптов MCP.
Непредвиденное поведение инструмента MCP: Рассматривайте вывод инструмента как недоверенные данные. Остановитесь перед выполнением команд, предложенных в выводе. Осмотрите исходный код сервера, конфигурацию, разрешения и транспорт. Хост MCP должен получать согласие пользователя. Спецификация также содержит рекомендации для разработчиков по вопросам согласия и контроля доступа, но протокол не заменяет ваш собственный аудит.
Откат и удаление
Откат начинается с отключения доступа, а не с удаления файлов.
- Остановите агента или запланированную задачу. Отключите запись сервера MCP или отсоедините клиент.
- Заблокируйте 1Password. Завершите интерактивную сессию авторизации SSH.
- Удалите публичный ключ. Удалите тестовый ключ из Bitbucket, репозитория или удаленного аккаунта.
- Отозвите учетную запись службы. Уберите у нее доступ к хранилищу и аннулируйте ее токен.
- Удалите элемент тестового SSH-ключа после подтверждения того, что ни один одобренный рабочий процесс не использует этот элемент.
- Удалите временную конфигурацию. Удалите тестовые ссылки, локальные переопределения сокета и сгенерированные журналы.
- Проверьте доказательства. Убедитесь, что запись об откате не содержит приватного ключа, токена или дампа окружения.
Удаление локального файла не отзывает публичный ключ, учетную запись службы, кэшированный токен или удаленную авторизацию. Убирайте каждое предоставленное право на его источнике.
Устранение неполадок
Агент запрашивает ключ для каждой команды
Проверьте выбранный диапазон авторизации. Одобрение для каждого запроса является более ограничительным. Сессия терминала или приложения могла завершиться. 1Password также запрашивает подтверждение повторно после события блокировки или выхода.
Агент видит приватный ключ в своей транскрипции
Остановите рабочий процесс и замените ключ. Осмотрите ответ сервера MCP, команду оболочки, журнал отладки и обертку инструмента. Замените чтение приватного ключа на использование SSH Agent для интерактивных задач. Для задач замените личный ключ на выделенную идентичность и задокументированное исключение.
В списке ключей слишком много идентичностей
SSH Agent 1Password отображает подходящие ключи из настроенных хранилищ. Используйте конфигурацию агента с ограниченным диапазоном или специфичную для хоста конфигурацию SSH. В документации агента также упоминается ограничение OpenSSH-сервера в шесть ключей.
Команда работает вручную, но не работает в задаче
Сравните идентичность, диапазон хранилища, окружение, данные ключа хоста, рабочую директорию и предположения об одобрении. Интерактивная сессия 1Password включает согласие человека. Запланированная задача — нет. Проектируйте задачу как отдельный режим доступа.
Сервер MCP подключен, но задача не выполняется
Соединение не подтверждает авторизацию. Проверьте обнаружение инструментов, учётные данные сервера, согласие клиента, разрешения операционной системы, сетевой доступ и разрешения на стороне целевого объекта на отдельных этапах. Первый тест должен быть только для чтения.
Следующие шаги
Для новых согласований используйте текущую спецификацию MCP от 28.07.2026. Любые ссылки на спецификацию от 18.06.2025 в этой статье являются историческим контекстом.
Начните с одного синтетического репозитория и одного инструмента MCP только для чтения. Отмечайте каждый ожидаемый результат как непроверенный, пока контролируемая среда не предоставит доказательств. Затем повторите рабочий процесс с целевым объектом, не являющимся производственным, с именованным оператором, проверенным ключом хоста и записанной записью о возможности отката.
Прочитайте справочник по CLI 1Password для актуальных флагов команд. Прочитайте Загрузка секретов в скрипты перед созданием автоматизации с использованием служебных учётных записей. Прочитайте спецификацию MCP перед согласованием инструментов с нового сервера.
Интерактивный SSH должен оставаться под контролем человека. Непрерывный доступ должен быть выделен отдельно. Частные ключи не должны читаться, если целевой объект поддерживает аутентификацию на основе агента.