Проблемы с 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. Однако следуя описанным методам, вы сможете устранить большинство проблем, связанных с их использованием. Если вы столкнулись с другими трудностями или у вас есть свои решения, не стесняйтесь делиться ими в комментариях!