L'agent GPG ne supprime pas ma clé SSH du trousseau de clés

14

J'ai un problème vraiment troublant. Je n'arrive pas gpg-agentà retirer ma clé SSH de son trousseau et elle persiste même après de nombreux redémarrages.

$ ssh-add -D
SSH_AGENT_FAILURE
Failed to remove all identities.

Même quand je lui dis de retirer l'identité:

$ ssh-add -d /path/to/private/key
Identity removed: /path/to/private/key

Je regarde alors

$ ssh-add -l
4096 1b:cb:52:a6:e5:13:e6:78:14:12:92:8f:34:8f:92:88 /path/to/private/key

et c'est toujours là.

Où est-ce mis en cache? Il semble écrire sur le disque pour une raison quelconque, ce qui est effrayant pour un agent SSH. Je lance ce qui suit pour commencer gpg-agent:

gpg-agent --enable-ssh-support --daemon 

Tout le reste fonctionne bien, mais il met ce fichier en cache quelque part et je dois le supprimer.

Naftuli Kay
la source

Réponses:

15

Comme avec la plupart des choses GPG, les informations d'identification ssh sont mises en cache dans le .gnupgrépertoire, en particulier dans ~/.gnupg/sshcontrol, qui ressemblera à ceci:

# List of allowed ssh keys.  Only keys present in this file are used
# in the SSH protocol.  The ssh-add tool may add new entries to this
# file to enable them; you may also add them manually.  Comment
# lines, like this one, as well as empty lines are ignored.  Lines do
# have a certain length limit but this is not serious limitation as
# the format of the entries is fixed and checked by gpg-agent. A
# non-comment line starts with optional white spaces, followed by the
# keygrip of the key given as 40 hex digits, optionally followed by a
# the caching TTL in seconds and another optional field for arbitrary
# flags.   Prepend the keygrip with an '!' mark to disable it.

# Key added on: 2013-09-19 22:15:50
# Fingerprint:  8b:56:b0:3f:c8...
681BF1EFF... 0
# Key added on: 2013-09-20 17:14:36
# Fingerprint:  4b:cb:7e:b0:d7...
F7BCEBD1C... 0

Comme le dit le commentaire, vous pouvez supprimer des clés en les supprimant ou les désactiver avec un !. Je n'ai pas testé, mais j'imagine que "désactiver" une clé signifie que vous ne pouvez pas l'activer explicitement ou l'ajouter sans modifier le fichier.

larsks
la source
Ce ne sont que des empreintes digitales clés. Il y a encore des clés privées stockées dans ~ / .gnupg / private-keys-v1.d /
dlitz
Mais ils ne sont plus visibles par l'agent ssh.
larsks
13

Oui, il semble que cela ssh -dsoit rompu avec l'agent de gpg. Voici une solution de contournement utilisant une commande différente.

Exécutez la gpg-connect-agentcommande à partir de la ligne de commande pour vous connecter à l'agent. Ensuite, à partir des invites, entrez cette commande pour répertorier les clés ssh

KEYINFO --ssh-list --ssh-fpr

Vous devriez voir quelque chose comme:

S KEYINFO 3365433C34421CC53B52C9A82169FD2328CF610B D - - - P df:a2:36:8d:ad:88:b3:cc:00:96:10:d4:c9:2c:e0:df - S
OK

Maintenant, pour supprimer l'agent de l'agent:

DELETE_KEY 3365433C34421CC53B52C9A82169FD2328CF610B

Il dira:

OK

Maintenant, quittez avec la commande BYE:

BYE OK fermeture de la connexion

Maintenant, vérifiez avec ssh-add -let vous verrez que c'est parti pour de vrai.

Jacob Brown
la source
J'ai reçu une invite après avoir tapé en DELETE_KEY <id>donnant plus d'informations sur la provenance du fichier ... était utile pour déterminer quelle clé était laquelle
Sam Mason
1

Si vous voulez un script pour cela:

keys=$(gpg-connect-agent 'keyinfo --list' /bye | awk '{print $3}' | head -n -1)
for key in $keys; do gpg-connect-agent "delete_key $key --force" /bye; done

Je ne suis pas l'expert ici, donc je donne juste un script simple que j'utilise. Rien d'extraordinaire. Rien de profond.

AFP_555
la source