El agente GPG no elimina mi clave SSH del llavero

14

Tengo un problema realmente preocupante. No puedo gpg-agenteliminar mi clave SSH de su llavero e incluso persiste allí después de muchos reinicios.

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

Incluso cuando le digo que elimine la identidad:

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

Entonces miro

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

y sigue ahí

¿Dónde se almacena esto? Parece estar escribiendo en el disco por alguna razón, lo cual es algo aterrador para un agente SSH. Estoy ejecutando lo siguiente para comenzar gpg-agent:

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

Todo lo demás funciona bien, pero está almacenando en caché este archivo en algún lugar y necesito eliminarlo.

Naftuli Kay
fuente

Respuestas:

15

Como con la mayoría de las cosas GPG, las credenciales ssh se almacenan en caché dentro del .gnupgdirectorio, específicamente en ~/.gnupg/sshcontrol, que se verá así:

# 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

Como dice el comentario, puede eliminar claves eliminándolas o deshabilitarlas con un !. No lo he probado, pero imagino que "deshabilitar" una clave significa que no puede habilitarla explícitamente o agregarla sin editar el archivo.

larsks
fuente
Estas son solo huellas digitales clave. Todavía hay claves privadas almacenadas en ~ / .gnupg / private-keys-v1.d /
dlitz
Pero ya no son visibles para el agente ssh.
Larsks
13

Sí, parece que ssh -destá roto con el agente de gpg. Aquí hay una solución usando un comando diferente.

Ejecute el gpg-connect-agentcomando desde la línea de comandos para conectarse al agente. Luego, desde las indicaciones allí, ingrese este comando para enumerar las teclas ssh

KEYINFO --ssh-list --ssh-fpr

Deberías ver algo como:

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

Ahora, para eliminar el del agente:

DELETE_KEY 3365433C34421CC53B52C9A82169FD2328CF610B

Dirá:

OK

Ahora, salga con el comando BYE:

BYE OK cierre de conexión

Ahora, verifique con ssh-add -ly verá que se ha ido de verdad.

Jacob Brown
fuente
Después de escribir, recibí un mensaje que DELETE_KEY <id>daba más información sobre el origen del archivo ... fue útil para averiguar qué clave era cuál
Sam Mason
1

Si quieres un script para esto:

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

No soy el experto aquí, así que solo estoy dando un script simple que uso. Nada sofisticado. Nada profundo

AFP_555
fuente