L'agente GPG non rimuove la mia chiave SSH dal portachiavi


14

Ho un problema davvero preoccupante. Non riesco gpg-agenta rimuovere la mia chiave SSH dal suo portachiavi e persiste anche lì dopo molti riavvii.

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

Anche quando gli dico di rimuovere l'identità:

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

Allora guardo

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

ed è ancora lì.

Dove viene memorizzato nella cache? Sembra che stia scrivendo sul disco per qualche motivo, il che è una cosa spaventosa per un agente SSH. Sto correndo il seguente per iniziare gpg-agent:

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

Tutto il resto funziona bene, ma sta memorizzando nella cache questo file da qualche parte e devo eliminarlo.

Risposte:


15

Come per la maggior parte delle cose GPG, le credenziali ssh sono memorizzate nella .gnupgdirectory all'interno della directory, in particolare in ~/.gnupg/sshcontrol, che avrà un aspetto simile al seguente:

# 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

Come dice il commento, puoi rimuovere le chiavi cancellandole o disabilitarle con a !. Non ho testato, ma immagino che "disabilitare" una chiave significhi che non è possibile abilitarlo esplicitamente o aggiungerlo senza modificare il file.


Queste sono solo le impronte digitali chiave. Ci sono ancora chiavi private memorizzate in ~ / .gnupg / private-keys-v1.d /
dlitz

Ma non sono più visibili all'agente ssh.
Larks

13

Sì, sembra che ssh -dsia rotto con l'agente di gpg. Ecco una soluzione alternativa che utilizza un comando diverso.

Eseguire il gpg-connect-agentcomando dalla riga di comando per connettersi all'agente. Quindi, dai prompt lì, immettere questo comando per elencare i tasti ssh

KEYINFO --ssh-list --ssh-fpr

Dovresti vedere qualcosa del tipo:

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

Ora, per rimuovere l'agente:

DELETE_KEY 3365433C34421CC53B52C9A82169FD2328CF610B

Dirà:

OK

Ora, esci con il comando BYE:

Ciao OK chiusura connessione

Ora verifica con ssh-add -le vedrai che è sparito per davvero.


Ho ricevuto una richiesta dopo aver digitato DELETE_KEY <id>fornendo ulteriori informazioni su da dove proveniva il file ... è stato utile per capire quale chiave era quale
Sam Mason,

1

Se vuoi uno script per questo:

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

Non sono l'esperto qui, quindi sto solo dando un semplice script che uso. Nulla di bello. Niente di profondo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.