Почему GnuPG 2 и gpg-connect-agent терпят неудачу с «ERR 67108983 Нет демона SmartCard»?

10

Используя Debian Jessie и GnuPG 2, каждый раз, когда я пытаюсь использовать GnuPG 2 ( gpg2) или gpg-connect-agentвместе со смарт-картой OpenPGP (в моем случае YubiKey), операция завершается с сообщением

$ gpg-connect-agent --hex "scd apdu 00 f1 00 00" /bye
ERR 67108983 No SmartCard daemon <GPG Agent>
$ gpg2 --card-status
ERR 67108983 No SmartCard daemon <GPG Agent>

При использовании устаревшей GnuPG 1 ( gpg) все работает нормально.

Что здесь не так?

Йенс Эрат
источник

Ответы:

15

scdaemon пропал, отсутствует

GnuPG 2 подключается к карте через gpg-agent, что опять-таки не включает в себя возможности смарт-карты, но обращается к ним через другое приложение. Это может быть настроено и имеет системно-зависимое значение по умолчанию man gpg-agent:

--scdaemon-program filename
      Use program filename as the Smartcard daemon.  The default is
      installation dependent and can be shown with the gpgconf command.

Это показывает, что GnuPG пытается запустить /usr/lib/gnupg2/scdaemon:

$ gpgconf
gpg:GPG für OpenPGP:/usr/bin/gpg2
gpg-agent:GPG Agent:/usr/bin/gpg-agent
scdaemon:Smartcard Daemon:/usr/lib/gnupg2/scdaemon
[snip]

Но это не доступно:

$ /usr/lib/gnupg2/scdaemon
bash: /usr/lib/gnupg2/scdaemon2: No such file or directory

Установка scdaemon

Быстрый запрос apt-cacheпоказывает, что Debian извлек scdaemon из gnupg2пакета, вероятно, потому что он вводит кучу новых зависимостей, в противном случае GnuPG не будет иметь:

Package: scdaemon
Source: gnupg2
Version: 2.1.10-3
Installed-Size: 538
Maintainer: Debian GnuPG Maintainers <pkg-gnupg-maint@lists.alioth.debian.org>
Architecture: amd64
Replaces: gpgsm (<< 2.0.18-2)
Depends: gnupg-agent (= 2.1.10-3), libassuan0 (>= 2.2.0), libc6 (>= 2.15),
  libgcrypt20 (>= 1.6.1), libgpg-error0 (>= 1.14), libksba8 (>= 1.2.0),
  libnpth0 (>= 0.90), libusb-0.1-4 (>= 2:0.1.12)
Breaks: gpgsm (<< 2.0.18-2)
Description-en: GNU privacy guard - smart card support
 GnuPG is GNU's tool for secure communication and data storage.
 It can be used to encrypt data and to create digital signatures.
 It includes an advanced key management facility and is compliant
 with the proposed OpenPGP Internet standard as described in RFC4880.
 .
 This package contains the smart card program scdaemon, which is used
 by gnupg-agent to access OpenPGP smart cards.

Установка его с помощью sudo apt-get install scdaemonрешает проблему.

Йенс Эрат
источник