Agen GPG tidak menghapus kunci SSH saya dari keyring

14

Saya memiliki masalah yang sangat mengganggu. Saya tidak bisa gpg-agentmenghapus kunci SSH saya dari keyring-nya dan bahkan tetap ada setelah banyak reboot.

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

Bahkan ketika saya mengatakannya untuk menghapus identitas:

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

Saya kemudian melihat

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

dan itu masih ada di sana.

Di mana ini di-cache? Tampaknya menulis ke disk untuk beberapa alasan, yang merupakan hal yang menakutkan bagi agen SSH untuk dilakukan. Saya menjalankan yang berikut ini untuk memulai gpg-agent:

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

Semua yang lain berfungsi dengan baik, tapi ini caching file ini di suatu tempat dan saya harus menghapusnya.

Naftuli Kay
sumber

Jawaban:

15

Seperti kebanyakan hal GPG, kredensial ssh di-cache di dalam .gnupgdirektori, khususnya di ~/.gnupg/sshcontrol, yang akan terlihat seperti ini:

# 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

Seperti kata komentar, Anda dapat menghapus kunci dengan menghapusnya, atau menonaktifkannya dengan a !. Saya belum menguji, tetapi saya membayangkan bahwa "menonaktifkan" kunci berarti Anda tidak dapat secara eksplisit mengaktifkannya atau menambahkannya tanpa mengedit file.

larsks
sumber
Ini hanya sidik jari kunci. Masih ada kunci pribadi yang disimpan di ~ / .gnupg / private-keys-v1.d /
dlitz
Tetapi mereka tidak lagi terlihat oleh agen ssh.
larsks
13

Ya, sepertinya ssh -drusak dengan agen gpg. Berikut ini solusinya menggunakan perintah yang berbeda.

Jalankan gpg-connect-agentperintah dari commandline untuk terhubung ke agen. Kemudian, dari prompt di sana, masukkan perintah ini untuk mendaftar kunci ssh

KEYINFO --ssh-list --ssh-fpr

Anda harus melihat sesuatu seperti:

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

Sekarang, untuk menghapus dari agen:

DELETE_KEY 3365433C34421CC53B52C9A82169FD2328CF610B

Itu akan mengatakan:

OK

Sekarang, berhenti dengan perintah BYE:

BYE OK koneksi penutup

Sekarang, verifikasi dengan ssh-add -ldan Anda akan melihat bahwa itu hilang nyata.

Jacob Brown
sumber
Saya mendapat prompt setelah mengetik DELETE_KEY <id>memberikan lebih banyak info tentang dari mana file itu berasal ... berguna untuk mengetahui kunci mana yang
Sam Mason
1

Jika Anda ingin skrip untuk ini:

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

Saya bukan ahli di sini, jadi saya hanya memberikan skrip sederhana yang saya gunakan. Tidak ada yang mewah. Tidak ada yang dalam.

AFP_555
sumber