Der GPG-Agent entfernt meinen SSH-Schlüssel nicht aus dem Schlüsselbund

14

Ich habe ein wirklich beunruhigendes Problem. Ich kann gpg-agentmeinen SSH-Schlüssel nicht aus dem Schlüsselbund entfernen und er bleibt dort auch nach vielen Neustarts bestehen.

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

Auch wenn ich es sage, um die Identität zu entfernen:

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

Ich schaue dann

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

und es ist immer noch da.

Wo wird das zwischengespeichert? Es scheint sich aus irgendeinem Grund um das Schreiben auf die Festplatte zu handeln, was für einen SSH-Agenten beängstigend ist. Ich führe Folgendes aus, um zu beginnen gpg-agent:

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

Alles andere funktioniert einwandfrei, aber diese Datei wird irgendwo zwischengespeichert, und ich muss sie löschen.

Naftuli Kay
quelle

Antworten:

14

Wie bei den meisten GPG-Anwendungen werden SSH-Anmeldeinformationen im .gnupgVerzeichnis zwischengespeichert, insbesondere in. ~/.gnupg/sshcontrolDies sieht ungefähr so ​​aus:

# 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

Wie der Kommentar besagt, können Sie Schlüssel entfernen, indem Sie sie löschen oder mit einem deaktivieren !. Ich habe nicht getestet, aber ich stelle mir vor, dass das Deaktivieren eines Schlüssels bedeutet, dass Sie ihn nicht explizit aktivieren oder hinzufügen können, ohne die Datei zu bearbeiten.

larsks
quelle
Dies sind nur wichtige Fingerabdrücke. Es sind noch private Schlüssel in ~ / .gnupg / private-keys-v1.d /
dlitz
Für den ssh-Agenten sind sie jedoch nicht mehr sichtbar.
Larsks
13

Ja, es scheint, dass ssh -dmit GPG's Agent gebrochen ist. Hier ist eine Problemumgehung mit einem anderen Befehl.

Führen Sie den gpg-connect-agentBefehl über die Befehlszeile aus, um eine Verbindung zum Agenten herzustellen. Geben Sie dann in den Eingabeaufforderungen diesen Befehl ein, um die SSH-Schlüssel aufzulisten

KEYINFO --ssh-list --ssh-fpr

Sie sollten etwas sehen wie:

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

So entfernen Sie die aus dem Agenten:

DELETE_KEY 3365433C34421CC53B52C9A82169FD2328CF610B

Es wird sagen:

OK

Beenden Sie nun mit dem BYE-Befehl:

BYE OK Verbindung wird geschlossen

Überprüfen ssh-add -lSie nun mit und Sie werden sehen, dass es für echt ist.

Jacob Brown
quelle
Nachdem ich DELETE_KEY <id>
Sam Mason,
1

Wenn Sie ein Skript dafür wollen:

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

Ich bin hier nicht der Experte, also gebe ich nur ein einfaches Skript, das ich benutze. Nichts Besonderes. Nichts tiefes.

AFP_555
quelle