gpg-agent (macOS) не предоставляет никаких ключей для SSH

Вопрос или проблема

Существует несколько тем, касающихся аналогичных проблем, но ни одно из предложенных там решений не работает в моем окружении, а именно:

  • 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 на вашей системе. Не забудьте проверить шаги на соответствие вашему конкретному окружению.

Оцените материал
Добавить комментарий

Капча загружается...