macOSСредняя

SSH-agent не запущен на macOS: быстрое исправление ошибки

Статья объясняет, почему на macOS возникает ошибка 'ssh-agent not running', и предоставляет пошаговые инструкции по запуску и настройке агента SSH для корректной работы с ключами.

Обновлено 4 апреля 2026 г.
5-10 мин
Низкая
FixPedia Team
Применимо к:macOS 10.15 (Catalina) и вышеВсе версии zsh и bash

Что означает ошибка "ssh-agent not running"

Ошибка ssh-agent not running (или Could not open a connection to your authentication agent) возникает, когда команды, работающие с SSH-ключами (например, ssh-add, git через SSH), не могут найти запущенный процесс ssh-agent и связанный с ним Unix-сокет.

Симптомы:

  • Выполнение ssh-add -l или ssh-add ~/.ssh/ваш_ключ завершается с указанной ошибкой.
  • Операции git clone, git push или git pull по SSH запрашивают пароль и могут падать.
  • Подключение к удалённому серверу через ssh user@host может требовать пароль вместо использования ключа.

Это означает, что ваша система не имеет работающего "хранилища" для расшифрованных приватных SSH-ключей в памяти.

Причины возникновения

  1. Агент не запущен автоматически. В современных версиях macOS (начиная с Catalina) по умолчанию используется zsh, и агент SSH может не добавляться в автозагрузку при создании нового пользователя или после сброса настроек.
  2. Переменная окружения SSH_AUTH_SOCK не установлена. Даже если агент работает, терминал должен знать, к какому сокету подключаться. Эта переменная может быть потеряна при перезапуске терминала или если профиль оболочки не настроен.
  3. Проблемы с управлением через launchd. Агент SSH на macOS управляется системным менеджером launchd. Если конфигурация в ~/Library/LaunchAgents/ повреждена или отсутствует, агент не стартует.
  4. Конфликт с другим агентом. На системе может быть запущен другой SSH-агент (например, из менеджера ключей), который конфликтует или перехватывает сокет.

Способ 1: Ручной запуск агента (быстрое решение)

Этот способ решает проблему в текущей сессии терминала.

  1. Запустите агент и получите переменные окружения:
    eval "$(ssh-agent -s)"
    
    Команда ssh-agent -s выводит команды для установки переменных SSH_AGENT_PID (PID процесса) и SSH_AUTH_SOCK (путь к сокету). eval выполняет их в текущей оболочке.
Терминал macOS с выводом команды ssh-agent и установкой переменных окружения

Терминал macOS с выводом команды ssh-agent и установкой переменных окружения

  1. Добавьте ваш SSH-ключ в агент:
    ssh-add ~/.ssh/id_rsa
    
    Если у вас другой тип ключа (например, Ed25519) или имя файла отличается, укажите правильный путь. Если ключ защищён паролем, система запросит его один раз.

После этого команды ssh-add -l и операции git должны работать.

Способ 2: Настройка автозапуска через профиль оболочки (постоянное решение)

Чтобы агент запускался автоматически при каждом открытии терминала, нужно добавить инициализацию в файл конфигурации вашей оболочки.

Файл конфигурации .zshrc с настройками автозапуска ssh-agent

Файл конфигурации .zshrc с настройками автозапуска ssh-agent

  1. Определите, какую оболочку вы используете:
    echo $SHELL
    

    Вывод будет /bin/zsh (по умолчанию с Catalina) или /bin/bash.
  2. Откройте соответствующий файл профиля в текстовом редакторе:
    • Для zsh: nano ~/.zshrc
    • Для bash: nano ~/.bash_profile (или ~/.bashrc)
  3. Добавьте в конец файла следующие строки:
    # Запуск ssh-agent, если он ещё не работает
    if [ -z "$SSH_AUTH_SOCK" ] ; then
      eval "$(ssh-agent -s)"
    fi
    

    Этот блок проверяет, существует ли уже переменная SSH_AUTH_SOCK. Если нет — запускает агент и экспортирует переменные.
  4. Сохраните файл (Ctrl+O, Enter, Ctrl+X в nano) и примените изменения:
    source ~/.zshrc  # или source ~/.bash_profile
    

    Или просто откройте новое окно терминала.
  5. Добавьте ключ один раз (если ещё не делали): ssh-add ~/.ssh/id_rsa.

Способ 3: Использование менеджера ключей macOS (Keychain)

macOS имеет встроенный системный клюchain, который может хранить SSH-ключи. Это самый интегрированный способ.

Команда добавления SSH-ключа в macOS Keychain с помощью ssh-add -K

Команда добавления SSH-ключа в macOS Keychain с помощью ssh-add -K

  1. Добавьте ключ в keychain при первом использовании:
    ssh-add -K ~/.ssh/id_rsa
    

    Ключ -K (заглавная K) добавляет ключ в macOS Keychain. После этого система будет автоматически запускать агент и подгружать ключ из keychain при входе в систему. Для macOS 12.0 (Monterey) и новее можно использовать ssh-add --apple-use-keychain ~/.ssh/id_rsa.
  2. Убедитесь, что в ~/.ssh/config (если он есть) нет настроек, переопределяющих это. Рекомендуемый конфиг для работы с keychain:
    Host *
      AddKeysToAgent yes
      UseKeychain yes
      IdentityFile ~/.ssh/id_rsa
    

Способ 4: Проверка и исправление прав на сокет

Иногда проблема в неправильных правах на каталог /tmp или сокет агента.

  1. Проверьте, существует ли сокет:
    ls -l $SSH_AUTH_SOCK
    

    Если переменная пуста или путь не существует — агент не создал сокет.
  2. Перезапустите агент вручную (Способ 1) и проверьте снова. Если проблема повторяется, проверьте права на временные файлы:
    sudo chmod 1777 /tmp
    

    Это стандартные права для /tmp (sticky bit). Будьте осторожны, изменяя системные каталоги.

Профилактика

  • Всегда настраивайте автозапуск через файл профиля оболочки (Способ 2) или используйте клюchain (Способ 3).
  • После обновления macOS или смены оболочки (например, с bash на zsh) проверьте, что файл профиля (.zshrc) содержит настройки для ssh-agent.
  • Не удаляйте вручную файлы сокета в /tmp/ (например, /tmp/ssh-*/agent.*). Это может оставить "зависшие" ссылки. Лучше перезапустите агент.
  • Регулярно обновляйте систему: softwareupdate --install --all, чтобы получать исправления для компонентов безопасности и launchd.

Часто задаваемые вопросы

Почему возникает ошибка 'ssh-agent not running'?
Как проверить, запущен ли ssh-agent?
Можно ли обойтись без ssh-agent?
Что делать, если ssh-add не работает даже после запуска агента?

Полезное

Запустите агент SSH и экспортируйте переменную
Добавьте автозапуск в профиль оболочки
Добавьте ключ в агент с помощью ssh-add

Эта статья помогла вам решить проблему?