… Конечно, gpg2 не может найти секретный ключ, потому что он ищет в неправильном файле.
Это не единственный файл, на который он смотрит.
В GnuPG 1.x (и 2.0) «secring» также имел дублирующую копию открытых данных вашего блока ключей, поэтому он был полностью автономным (и единственная разница между gpg -k
и gpg -K
каким файлом он читал), но в то же время сложнее поддерживать программу.
В GnuPG 2.1 секретные ключи теперь хранятся независимо - они поддерживаются gpg-agent, который их хранит ~/.gnupg/private-keys-v1.d/
. Таким образом, и то, gpg -k
и другое gpg -K
теперь должны прочитать информацию OpenPGP из публикации, но последняя дополнительно спрашивает gpg-agent о том, с какими сертификатами связаны секретные ключи. Если вы используете strace, вы должны заметить connect()
звонок сразу после прочтения публикации.
Если GnuPG не выполняет автоматическую миграцию ключей, просто импортируйте весь секрет напрямую:
gpg2 --import ~/.gnupg/secring.gpg
Чтобы проверить содержимое агента вручную:
$ gpg-connect-agent > keyinfo --list S KEYINFO 926145FFCA32B3E6E079A0CF73EA77C40733A349 D - - - P - - - S KEYINFO BACFB81EAFC864F4AB2926E8B1F55AD579F78D1A D - - - P - - - S KEYINFO FF3D1DD51B9C79E148CCCEA5F7F3E25EC96048B7 D - - - P - - - S KEYINFO 4D29EF1460F164CDB11D0FC0247214660ACDD60F D - - - P - - - S KEYINFO 06B13685B9AA429B9CABCE480930D74B991C8DF0 D - - - P - - - S KEYINFO B28DB8D045654E8A6A40466A07FCD9E432935E29 D - - - P - - - Хорошо > / пока $
Это «набор ключей» - сравните их с секретом GnuPG:
$ gpg --list-secret-keys --with-keygrip /home/fred/.gnupg/pubring.kbx -------------------------------- sec ed25519 2018-08-18 [SC] 2357E133AD5D24F6CB2C1B0CEF4F7ED27E252632 Keygrip = 4D29EF1460F164CDB11D0FC0247214660ACDD60F uid [ultimate] Фред Фубар <fred@example.com>