Вопрос или проблема
Я использую pass (cli pw manager) уже пару лет, и только что начал использовать yubikeys.
У меня (2) YK, которые я настроил как дубликаты друг друга, перенесив одни и те же под-ключи gpg (S, E и A) на каждую из них.
Я добавил идентификатор gpg-ключа YK в свой файл ~/.password-store/.gpg-id и переинициализировал хранилище, чтобы перешифровать записи с использованием нового ключа.
Теперь я могу использовать pass с любой из моих YK, чтобы открыть запись в хранилище паролей с помощью pass, однако, когда я пытаюсь отредактировать существующую запись или добавить новую, я сталкиваюсь с:
$pass add test
Введите пароль для теста:
Повторите пароль для теста:
gpg: B7C0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx1BB7: пропущено: Нет открытого ключа
gpg: [stdin]: ошибка шифрования: Нет открытого ключа
Шифрование пароля прервано.
Проверка ключа возвращает:
$gpg -K YUBI
sec# rsa4096/289xxxxxxxxxx8B5 2024-11-01 [SC] [истекает: 2034-10-30]
Отпечаток ключа = 8C6B xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 58B5
Keygrip = E7608xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx37AFD
uid [всёобъемлющий] Имя Фамилия (YUBIKEY) <[email protected]>
ssb> rsa4096/130xxxxxxxxxxA7D 2024-11-01 [S] [истекает: 2034-10-30]
Keygrip = 18DD9xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx1599B
ssb> rsa4096/A39xxxxxxxxxxEBD 2024-11-01 [E] [истекает: 2034-10-30]
Keygrip = 5BD06xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx8B9FD
ssb> rsa4096/779xxxxxxxxxxBAA 2024-11-01 [A] [истекает: 2034-10-30]
Keygrip = 0A10BxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxAFA2F
и
gpg -k YUBI
pub rsa4096/289xxxxxxxxxx8B5 2024-11-01 [SC] [истекает: 2034-10-30]
Отпечаток ключа = 8C6B xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 58B5
Keygrip = E7608xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx37AFD
uid [всёобъемлющий] Имя Фамилия (YUBIKEY) <[email protected]>
ssb> rsa4096/130xxxxxxxxxxA7D 2024-11-01 [S] [истекает: 2034-10-30]
Keygrip = 18DD9xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx1599B
ssb> rsa4096/A39xxxxxxxxxxEBD 2024-11-01 [E] [истекает: 2034-10-30]
Keygrip = 5BD06xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx8B9FD
ssb> rsa4096/779xxxxxxxxxxBAA 2024-11-01 [A] [истекает: 2034-10-30]
Keygrip = 0A10BxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxAFA2F
Попытка повторно импортировать pub не привела к изменениям, как и ожидалось.
Шифрование файла так:
$ gpg -r YUBIKEY -e файл
а затем расшифровка с помощью:
$ gpg -d файл.gpg
работает как ожидалось. Я ввожу пароль, и содержимое файла выводится после этого.
Теперь я в растерянности и не уверен, в чем проблема. Если у кого-то есть предложения или советы, я был бы очень признателен. Спасибо.
Ответ или решение
Проблема, с которой вы столкнулись при использовании pass
и YubiKey, связана с неправильной конфигурацией ключей GPG, что приводит к невозможности добавления или редактирования записей. Давайте разберемся в этом вопросе подробнее.
Контекст проблемы
По вашему описанию видно, что у вас настроены два YubiKey, оба из которых используют одни и те же подписи GPG. Вы правильно добавили идентификатор ключа YubiKey в файл ~/.password-store/.gpg-id
и повторно инициализировали хранилище паролей, чтобы зашифровать записи с использованием нового ключа. Однако ошибка, которую вы получаете, указывает на отсутствие открытого ключа для шифрования.
Причины возникновения ошибки
-
Нет открытого ключа для шифрования: Ошибка
gpg: skipped: No public key
говорит о том, что GPG не может найти открытый ключ, необходимый для шифрования вашей записи. Это происходит, когда GPG не может сопоставить используемый вами YubiKey с открытым ключом, который хранится в локальном хранилище. -
Проблемы с конфигурацией GPG: Возможно, в процессе настройки ключей на YubiKey произошла ошибка. Например, ключи, которые вы перенесли на YubiKey, могут быть не связаны корректно с вашим локальным хранилищем GPG.
-
Использование неправильного ключа: Убедитесь, что
pass
использует тот же ключ, что и GPG, для шифрования и расшифровки ваших данных. Возможно, необходимо пересоздать ключи или переустановить конфигурацию.
Решения
-
Проверьте наличие открытого ключа: Убедитесь, что открытый ключ вашего YubiKey доступен в вашей локальной базе данных ключей GPG. Используйте команду
gpg --list-keys
и убедитесь, что открытый ключ присутствует. -
Пересоздайте хранилище: Если ключи правильно настроены, возможно, вам потребуется пересоздать или перезагрузить своё хранилище паролей. Попробуйте удалить файл
~/.password-store/.gpg-id
, а затем заново добавить идентификатор вашего открытого ключа и повторно инициализировать хранилище для зашифровки. -
Обновите ключи GPG: Если вы изменяли что-то в конфигурации ключей GPG, убедитесь, что вы повторно импортировали открытые ключи с помощью команды
gpg --import
. Если вы изменяли ключи, возможно, потребуется заново установить их в хранилище. -
Проверьте правильность использования GPG: Убедитесь, что ваши действия с GPG работают независимо от
pass
. Проверьте, что командаgpg -r YUBIKEY -e file
работает без ошибок, и убедитесь, что вы используете тот же самый идентификатор ключа при работе сpass
.
Заключение
Подводя итог, проблема с pass
и YubiKey может быть связана с отсутствием открытого ключа для шифрования, неправильной конфигурацией ключей или несовпадением ключей между локальным хранилищем и YubiKey. Выполняя предложенные шаги для проверки и исправления конфигурации, вы сможете решить возникшую проблему и продолжить использовать pass
с вашим YubiKey. Если проблема сохраняется, рекомендуется обратиться к документации pass
и GPG для дальнейшего изучения возможных нюансов настройки.