GPG-AGENT: Как запросить один ключ из нескольких загруженных GPG-ключей

Проблемы с YubiKey и GPG на Debian: возможные решения

Работа с YubiKey и GPG может быть довольно сложной задачей, особенно при переходе с одной операционной системы на другую. В этой статье мы рассмотрим типичные проблемы, с которыми сталкиваются пользователи YubiKey на дистрибутивах на основе Debian, и предложим возможные решения.


Текущая проблема: Ошибка при использовании нескольких YubiKey

Мой опыт с тремя YubiKey, загруженными одним и тем же ключом GPG, показал, что при переходе с Fedora на дистрибутив на основе Debian возникли проблемы. В частности, не удается определить, какой серийный номер YubiKey запрашивается gpg-agent. Как результат, при подключении не того YubiKey появляется ошибка:

$ pass -c workLogin
gpg: decryption failed: No secret key

В остальное время все приложения, такие как FIDO2 и OTP, работают нормально.


Возможные причины и пути решения

1. Кэширование информации о серийных номерах

Одной из причин проблем может быть то, что GnuPG "запоминает", какой закрытый ключ хранится на каком аппаратном токене. Эта информация сохраняется как "заглушки" вместо полных закрытых ключей в директории ~/.gnupg/private-keys-v1.d/. Поэтому просто перезапускать gpg-agent или scdaemon может быть недостаточно.

2. Команда learn

Чтобы обновить заглушки, необходимо выполнить команду:

gpg-connect-agent "scd serialno" "learn --force" /bye

Эта команда перечитывает данные с токена и обновляет заглушки в файлах. В новых средах настройки вам придется запустить эту команду для каждого токена один раз.


Использование псевдонимов для упрощения процесса

Чтобы упростить процесс, можно создать псевдоним для команды. Например:

sn=`ykman info | grep Serial | awk '{print $3}'` ; echo $sn ; gpg-connect-agent $sn "learn --force" /bye

Однако, если вы столкнулись с ошибками при использовании переменной $sn, такие как ERR 67109139 Unknown IPC command <GPG Agent> и ERR 67141741 Broken pipe <GPG Agent>, это может быть связано с неправильной передачей аргументов в команду. Важно убедиться, что переменная правильно инициализируется перед ее передачей.


Проверка серийных номеров ключей

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

grep -r $YK_SERIAL ~/.gnupg/private-keys-v1.d

Если серийные номера записаны, то проблем быть не должно.


Заключение

Переход с одного дистрибутива Linux на другой может вызвать множество проблем, особенно при использовании аппаратных токенов, таких как YubiKey. Однако следуя описанным методам, вы сможете устранить большинство проблем, связанных с их использованием. Если вы столкнулись с другими трудностями или у вас есть свои решения, не стесняйтесь делиться ими в комментариях!

Источник

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *