Ho due smart card: SCard1 e SCard2. Le stesse chiavi sono memorizzate su entrambi.
Una delle funzionalità che uso di più è l'autenticazione SSH per accedere a più server. Ma non posso usare il secondo dopo aver usato il primo entrambe le smart card ( not contemporaneamente) sullo stesso computer.
Viene visualizzato il seguente messaggio:
Please remove the current card and insert the one with serial number
[a long ID containing the SCard1 identification number]
Passaggi per riprodurre il problema
Prepariamo un ambiente pulito.
$ 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 collegato
Quindi inserisco il mio 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]
L'ultima chiave è utilizzata per l'autenticazione.
$ ls /tmp/gnupg/private-keys-v1.d/
somehash1.key somehash2.key somehash.3.key
Suppongo che quegli hash provengano dai tasti che ho memorizzato sulla mia smart card.
$ 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
Tutto funziona come previsto.
Con SCard2 collegato
Scolleghiamo SCard1 e colleghiamo SCard2.
$ ssh example.com hostname
E viene visualizzato il seguente messaggio:
Please remove the current card and insert the one with serial number
[a long ID containing the SCard1 identification number]
Nota che ho ottenuto lo stesso risultato quando inserisco prima SCard2 e poi SCard1.
Parte di una soluzione
Alcune ricerche su Internet mi hanno fatto capire che gli "stub delle chiavi" sono memorizzati in ~/.gnupg/private-keys-v1.d/
. L'eliminazione dell'intera directory ha risolto il problema. Forse l'eliminazione di uno dei .key
sarebbe il trucco.
La domanda
È possibile utilizzare entrambe le chiavi senza eliminare alcun file?