O agente GPG não remove minha chave SSH do chaveiro

14

Eu tenho um problema realmente preocupante. Não consigo gpg-agentremover minha chave SSH do chaveiro e ela ainda persiste após várias reinicializações.

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

Mesmo quando eu digo para remover a identidade:

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

Então eu olho

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

e ainda está lá.

Onde isso está sendo armazenado em cache? Parece estar gravando no disco por algum motivo, o que é assustador para um agente SSH. Estou executando o seguinte para iniciar gpg-agent:

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

Tudo o resto funciona bem, mas está armazenando esse arquivo em algum lugar e preciso excluí-lo.

Naftuli Kay
fonte

Respostas:

15

Como na maioria das coisas GPG, as credenciais ssh são armazenadas em cache dentro do .gnupgdiretório, especificamente no ~/.gnupg/sshcontrol, que será algo parecido com isto:

# 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 o comentário diz, você pode remover as chaves excluindo-as ou desabilitá-las com a !. Não testei, mas imagino que "desabilitar" uma chave significa que você não pode habilitá-la explicitamente ou adicioná-la sem editar o arquivo.

larsks
fonte
Essas são apenas impressões digitais importantes. Ainda existem chaves privadas armazenadas em ~ / .gnupg / private-keys-v1.d /
dlitz 17/05/19
Mas eles não são mais visíveis para o agente ssh.
Larsks 17/05/19
13

Sim, parece que ssh -destá quebrado com o agente do gpg. Aqui está uma solução alternativa usando um comando diferente.

Execute o gpg-connect-agentcomando na linha de comando para conectar-se ao agente. Em seguida, nas solicitações existentes, digite este comando para listar as chaves ssh

KEYINFO --ssh-list --ssh-fpr

Você deve 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

Agora, para remover o do agente:

DELETE_KEY 3365433C34421CC53B52C9A82169FD2328CF610B

Ele dirá:

OK

Agora, saia com o comando BYE:

Adeus, fechando a conexão

Agora, verifique com ssh-add -le você verá que ele se foi de verdade.

Jacob Brown
fonte
Eu tenho um prompt após digitar DELETE_KEY <id>dar mais informações sobre o local onde o arquivo veio ... foi útil para descobrir qual chave era que
Sam Mason
1

Se você deseja um script para isso:

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

Eu não sou o especialista aqui, estou apenas dando um script simples que eu uso. Nada chique. Nada profundo.

AFP_555
fonte