Вопрос или проблема
Существует несколько тем, касающихся аналогичных проблем, но ни одно из предложенных там решений не работает в моем окружении, а именно:
- macOS 11.2.3 (MacBookPro M1/Apple silicon)
- GnuPG 2.2.27 (установлен через Homebrew)
- Оболочка Zsh
- Ключ GPG с подключаемым ключом только для аутентификации SSH
Файл ~/.gnupg/gpg-agent.conf:
pinentry-program /opt/homebrew/bin/pinentry-tty
enable-ssh-support
Файл ~/.gnupg/sshcontrol:
FADD8723...AE7ED (ключевой хендлер получен с помощью `gpg -K --with-keygrip`)
Файл ~/.zshrc:
unset SSH_AGENT_PID
export GPG_TTY="$(tty)"
export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
gpgconf --launch gpg-agent
Я убедился, что ssh-agent не запущен (также перезагрузил систему, чтобы убедиться).
Но никаких ключей не найдено при выполнении:
ssh-add -L
У агента нет идентификаторов
Что я упускаю?
ИЗМЕНИТЬ: Я должен добавить, что я также настроил несколько систем Debian 10 таким образом, и все работает отлично.
Похоже, вы используете gpg-agent
для управления SSH-ключами вместо ssh-agent
. Это нормально, но поскольку SSH-ключи могут быть установлены где угодно в системе, вам все равно нужно использовать ssh-add
, чтобы добавить ключи к агенту, как раньше. Например, в Linux gpg-agent
запомнит, о каких ключах вы ему сообщили, и попытается загрузить их в следующий раз, но вам все равно нужно изначально сказать ему, какие ключи использовать.
Ответ или решение
Ваш вопрос касается проблемы с использованием gpg-agent
для SSH-ключей на macOS, и в вашем окружении действительно есть определенные нюансы, которые важно учитывать. Давайте разберем вашу ситуацию пошагово, чтобы вы смогли успешно настроить gpg-agent
для работы с SSH.
1. Проверка условий окружения
Согласно вашему описанию, у вас установлен:
- macOS 11.2.3 на Apple M1 (силиконовая архитектура)
- GnuPG 2.2.27, установленный через Homebrew
- Шелл Zsh
Вы также указали, что у вас есть ключ GPG с подключенным субключом, который предназначен для SSH. Это важный аспект, так как именно он будет использоваться для аутентификации.
2. Конфигурация gpg-agent
Ваш файл ~/.gnupg/gpg-agent.conf
выглядит корректно:
pinentry-program /opt/homebrew/bin/pinentry-tty
enable-ssh-support
Это должно разрешать использование gpg-agent
в качестве SSH-агента. Однако, давайте убедимся, что конфигурация действительно применяется:
- Убедитесь, что
gpg-agent
запущен, и для этого вы можете выполните команду:
gpgconf --launch gpg-agent
- После этого проверьте, с каким
SSH_AUTH_SOCK
работаете:
echo $SSH_AUTH_SOCK
Вы должны увидеть путь к сокету, который должен выглядеть как /Users/имя_пользователя/.gnupg/S.gpg-agent.ssh
.
3. Настройка zshrc
Строки в вашем ~/.zshrc
файле также выглядят уместно. Однако, мы можем добавить одну ключевую строку для явного устранения старого ssh-agent
:
killall gpg-agent
Также не забудьте сделать source ~/.zshrc
, чтобы применить изменения. Либо выполните в терминале команду:
source ~/.zshrc
4. Добавление SSH-ключа в gpg-agent
После конфигурации вам необходимо добавить ваш ключ в gpg-agent
. Если ключ уже создан, используйте следующую команду:
gpg --export-secret-keys --armor > my-private-key.asc
Импортируйте его с помощью:
gpg --import my-private-key.asc
Теперь, чтобы добавить ключ к gpg-agent
, выполните:
ssh-add -L
Если вы видите сообщение «The agent has no identities», это указывает на то, что ключ не был добавлен. Используйте:
gpg --list-keys
И убедитесь, что ваш SSH-подключаемый ключ правильно настроен.
5. Проверка и отладка
- Проверьте файл
~/.gnupg/sshcontrol
, чтобы удостовериться, что он содержит правильный ключгрип (keygrip). - Используйте следующую команду для получения списка ключей:
gpg --card-status
6. Заключение
Если после выполнения всех шагов проблема сохранится, попробуйте повторно проверить настройки gpg-agent
и SSH. Иногда случаи специфичны для архитектуры и могут потребовать дополнительных исправлений. Также стоит удостовериться, что вы запускаете последнюю версию GnuPG и другие инструменты, так как обновления могут содержать исправления для параметров совместимости с macOS на Apple Silicon.
Таким образом, следуя предложенным шагам, вы сможете успешно настроить gpg-agent
для работы с SSH на вашей системе. Не забудьте проверить шаги на соответствие вашему конкретному окружению.