Что означает ошибка "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-ключей в памяти.
Причины возникновения
- Агент не запущен автоматически. В современных версиях macOS (начиная с Catalina) по умолчанию используется
zsh, и агент SSH может не добавляться в автозагрузку при создании нового пользователя или после сброса настроек. - Переменная окружения
SSH_AUTH_SOCKне установлена. Даже если агент работает, терминал должен знать, к какому сокету подключаться. Эта переменная может быть потеряна при перезапуске терминала или если профиль оболочки не настроен. - Проблемы с управлением через
launchd. Агент SSH на macOS управляется системным менеджеромlaunchd. Если конфигурация в~/Library/LaunchAgents/повреждена или отсутствует, агент не стартует. - Конфликт с другим агентом. На системе может быть запущен другой SSH-агент (например, из менеджера ключей), который конфликтует или перехватывает сокет.
Способ 1: Ручной запуск агента (быстрое решение)
Этот способ решает проблему в текущей сессии терминала.
- Запустите агент и получите переменные окружения:
Командаeval "$(ssh-agent -s)"ssh-agent -sвыводит команды для установки переменныхSSH_AGENT_PID(PID процесса) иSSH_AUTH_SOCK(путь к сокету).evalвыполняет их в текущей оболочке.

Терминал macOS с выводом команды ssh-agent и установкой переменных окружения
- Добавьте ваш SSH-ключ в агент:
Если у вас другой тип ключа (например, Ed25519) или имя файла отличается, укажите правильный путь. Если ключ защищён паролем, система запросит его один раз.ssh-add ~/.ssh/id_rsa
После этого команды ssh-add -l и операции git должны работать.
Способ 2: Настройка автозапуска через профиль оболочки (постоянное решение)
Чтобы агент запускался автоматически при каждом открытии терминала, нужно добавить инициализацию в файл конфигурации вашей оболочки.

Файл конфигурации .zshrc с настройками автозапуска ssh-agent
- Определите, какую оболочку вы используете:
echo $SHELL
Вывод будет/bin/zsh(по умолчанию с Catalina) или/bin/bash. - Откройте соответствующий файл профиля в текстовом редакторе:
- Для zsh:
nano ~/.zshrc - Для bash:
nano ~/.bash_profile(или~/.bashrc)
- Для zsh:
- Добавьте в конец файла следующие строки:
# Запуск ssh-agent, если он ещё не работает if [ -z "$SSH_AUTH_SOCK" ] ; then eval "$(ssh-agent -s)" fi
Этот блок проверяет, существует ли уже переменнаяSSH_AUTH_SOCK. Если нет — запускает агент и экспортирует переменные. - Сохраните файл (
Ctrl+O,Enter,Ctrl+Xв nano) и примените изменения:source ~/.zshrc # или source ~/.bash_profile
Или просто откройте новое окно терминала. - Добавьте ключ один раз (если ещё не делали):
ssh-add ~/.ssh/id_rsa.
Способ 3: Использование менеджера ключей macOS (Keychain)
macOS имеет встроенный системный клюchain, который может хранить SSH-ключи. Это самый интегрированный способ.

Команда добавления SSH-ключа в macOS Keychain с помощью ssh-add -K
- Добавьте ключ в keychain при первом использовании:
ssh-add -K ~/.ssh/id_rsa
Ключ-K(заглавная K) добавляет ключ в macOS Keychain. После этого система будет автоматически запускать агент и подгружать ключ из keychain при входе в систему. Для macOS 12.0 (Monterey) и новее можно использоватьssh-add --apple-use-keychain ~/.ssh/id_rsa. - Убедитесь, что в
~/.ssh/config(если он есть) нет настроек, переопределяющих это. Рекомендуемый конфиг для работы с keychain:Host * AddKeysToAgent yes UseKeychain yes IdentityFile ~/.ssh/id_rsa
Способ 4: Проверка и исправление прав на сокет
Иногда проблема в неправильных правах на каталог /tmp или сокет агента.
- Проверьте, существует ли сокет:
ls -l $SSH_AUTH_SOCK
Если переменная пуста или путь не существует — агент не создал сокет. - Перезапустите агент вручную (Способ 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.