Agent GPG nie usuwa mojego klucza SSH z kluczy


14

Mam naprawdę niepokojący problem. Nie mogę gpg-agentusunąć mojego klucza SSH z jego kluczy, a nawet utrzymuje się tam po wielu restartach.

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

Nawet gdy powiem, aby usunąć tożsamość:

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

Potem patrzę

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

i nadal tam jest.

Gdzie to jest buforowane? Z jakiegoś powodu wydaje się, że zapisuje na dysk, co jest przerażające dla agenta SSH. Uruchomię następujące czynności, aby rozpocząć gpg-agent:

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

Wszystko inne działa dobrze, ale gdzieś buforuje ten plik i muszę go usunąć.

Odpowiedzi:


15

Podobnie jak w przypadku większości rzeczy GPG, poświadczenia ssh są buforowane w .gnupgkatalogu, w szczególności w ~/.gnupg/sshcontrol, który będzie wyglądał mniej więcej tak:

# 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

Jak mówi komentarz, możesz usunąć klucze, usuwając je lub wyłączając za pomocą !. Nie testowałem, ale wyobrażam sobie, że „wyłączenie” klucza oznacza, że ​​nie można go jawnie włączyć ani dodać bez edycji pliku.


To tylko kluczowe odciski palców. Wciąż są przechowywane klucze prywatne w ~ / .gnupg / private-keys-v1.d /
dlitz

Ale nie są już widoczne dla agenta ssh.
larsks

13

Tak, wygląda na to, że ssh -djest zepsuty przez agenta gpg. Oto obejście za pomocą innego polecenia.

Uruchom gpg-connect-agentkomendę z wiersza komend, aby połączyć się z agentem. Następnie w wyświetlonych tam monitach wprowadź to polecenie, aby wyświetlić klucze ssh

KEYINFO --ssh-list --ssh-fpr

Powinieneś zobaczyć coś takiego:

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

Teraz, aby usunąć z agenta:

DELETE_KEY 3365433C34421CC53B52C9A82169FD2328CF610B

Powie:

OK

Teraz wyjdź za pomocą polecenia BYE:

BYE OK zamykanie połączenia

Teraz sprawdź za pomocą, ssh-add -la zobaczysz, że zniknęło na dobre.


Otrzymałem monit po wpisaniu, DELETE_KEY <id>podając więcej informacji o tym, skąd pochodzi plik… przydatne było ustalenie, który klucz był
Sam Mason

1

Jeśli potrzebujesz skryptu do tego:

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

Nie jestem tutaj ekspertem, więc podaję prosty skrypt, którego używam. Nic fajnego. Nic głębokiego.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.