Tengo dos tarjetas inteligentes: SCard1 y SCard2. Las mismas claves se almacenan en ambos.
Una de las funciones que más utilizo es la autenticación SSH para acceder a múltiples servidores. Pero no puedo usar el segundo después de haber usado el primero ambas tarjetas inteligentes ( no simultáneamente) en la misma computadora.
Se muestra el siguiente mensaje:
Retire la tarjeta actual e inserte la que tiene el número de serie
[una ID larga que contiene el número de identificación SCard1]
Pasos para reproducir el problema
Preparemos un ambiente limpio.
$ export GNUPGHOME=/tmp/gnupg
$ mkdir /tmp/gnupg && chmod go-rwx /tmp/gnupg
$ curl [public key URL] | gpg --import
gpg: keybox '/tmp/gnupg/pubring.kbx' created
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 6194 100 6194 0 0 2408 0 0:00:02 0:00:02 --:--:-- 2408
gpg: /tmp/gnupg/trustdb.gpg: trustdb created
gpg: key 3D5DDE26A0B55831: public key imported
gpg: Total number processed: 1
gpg: imported: 1
Con SCard1 conectado
Luego inserto mi SCard 1.
$ ls /tmp/gnupg/private-keys-v1.d/
$ gpg --card-status
Reader ...........: Yubico Yubikey 4 OTP U2F CCID 00 00
Application ID ...: [SCard1 identification number]
blahblah
ssb> rsa2048/467299D324A21B24 created: 2017-01-10 expires: 2018-01-10
card-no: [SCard1 identification number]
ssb> rsa2048/11771A79F4B85B41 created: 2017-01-10 expires: 2018-01-10
card-no: [SCard1 identification number]
ssb> rsa2048/F31D41149A84B062 created: 2017-01-10 expires: 2018-01-10
card-no: [SCard1 identification number]
La última clave se utiliza para la autenticación.
$ ls /tmp/gnupg/private-keys-v1.d/
somehash1.key somehash2.key somehash.3.key
Supongo que esos hashes provienen de las claves que he almacenado en mi tarjeta inteligente.
$ gpg -K
/tmp/gnupg/pubring.kbx
sec# rsa4096 2017-01-10 [SC] [expires: 2019-01-10]
[primary key ]
ssb> rsa2048 2017-01-10 [S] [expires: 2018-01-10]
ssb> rsa2048 2017-01-10 [E] [expires: 2018-01-10]
ssb> rsa2048 2017-01-10 [A] [expires: 2018-01-10]
$ ssh example.com hostname
*** asked to enter pin
example.com
Todo funciona como se espera.
Con SCard2 conectado
Desconectemos SCard1 y enchufemos SCard2.
$ ssh example.com hostname
Y se muestra el siguiente mensaje:
Retire la tarjeta actual e inserte la que tiene el número de serie
[una ID larga que contiene el número de identificación SCard1]
Tenga en cuenta que obtengo el mismo resultado cuando inserto el primer SCard2 y luego el SCard1.
Parte de una solución
Algunas búsquedas en Internet me hicieron entender que los "apéndices clave" se almacenan en ~/.gnupg/private-keys-v1.d/
. Eliminar todo el directorio solucionó el problema. Tal vez solo eliminar uno de los .key
haría el truco.
La pregunta
¿Es posible usar ambas claves sin eliminar ningún archivo?