Supprimer une clé SSH stockée par gpg-agent
Gpg-agent peut servir d’agent SSH (il va donc conserver les clés en mémoire) mais si l’ajout d’une clé se fait bien classiquement avec ssh-add …
, la suppression d’une clé est plus complexe, ssh-agent -d …
ne fonctionnant pas.
Repérer la somme MD5 de la clé à supprimer
Pour afficher les sommes MD5 des clés stockées par l’agent :
ssh-add -l -E md5
Ça donne un truc comme :
256 MD5:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa foo@bar (ED25519)
256 MD5:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb baz@qux (ED25519)
Si malheureusement vous n’avez pas spécifié le commentaire lors de la création de votre clé SSH, il y a des chances que vous vous retrouviez avec un truc comme :
256 MD5:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa foo@bar (ED25519)
256 MD5:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb foo@bar (ED25519)
Regardez bien la fin des lignes : vous ne savez pas quelle clé vous souhaitez supprimer !
Pour retrouver quelle somme MD5 correspond à quelle clé :
ssh-add -L
Ce qui affiche les clés publiques des clés SSH stockées, à savoir un truc comme :
ssh-ed25519 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX foo@bar
ssh-ed25519 YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY foo@bar
Un coup de grep -RF XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ~/.ssh
vous permettra d’identifier les clés. L’ordre entre ssh-add -l -E md5
et ssh-add -L
reste le même (heureusement).
Afficher le grip des clés stockées par gpg-agent
gpg-connect-agent 'KEYINFO --ssh-list --ssh-fpr' /bye
Ce qui donne un truc comme :
S KEYINFO VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV D - - - P MD5:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa - S
S KEYINFO ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ D - - - P MD5:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb - S
Le texte après le KEYINFO
est le grip de la clé, qui va nous servir pour supprimer la clé :
gpg-connect-agent 'DELETE_KEY ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ' /bye
Et c’est fini 🙂
No Comments