ตัวแทน GPG ไม่ได้ลบกุญแจ SSH ของฉันจากพวงกุญแจ


14

ฉันมีปัญหาหนักใจจริงๆ ฉันไม่สามารถgpg-agentลบคีย์ SSH ของฉันออกจากพวงกุญแจได้และยังคงมีอยู่หลังจากรีบูตหลายครั้ง

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

แม้ว่าฉันจะบอกให้ลบข้อมูลระบุตัวตน:

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

ฉันดูแล้ว

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

และมันยังอยู่ที่นั่น

สิ่งนี้ถูกแคชไว้ที่ไหน ดูเหมือนว่าจะมีการเขียนไปยังดิสก์ด้วยเหตุผลบางอย่างซึ่งเป็นสิ่งที่น่ากลัวสำหรับตัวแทน SSH ที่จะทำ ฉันกำลังเรียกใช้สิ่งต่อไปนี้เพื่อเริ่มต้นgpg-agent:

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

ทุกอย่างทำงานได้ดี แต่แคชไฟล์นี้อยู่ที่ไหนสักแห่งและฉันต้องลบมัน

คำตอบ:


15

เช่นเดียวกับ GPG ส่วนใหญ่ข้อมูลประจำตัว ssh จะถูกเก็บไว้ใน.gnupgไดเรกทอรีโดยเฉพาะ~/.gnupg/sshcontrolซึ่งจะมีลักษณะดังนี้:

# 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

!ในฐานะที่เป็นความคิดเห็นกล่าวว่าคุณสามารถลบคีย์โดยการลบพวกเขาหรือปิดการใช้งานพวกเขาด้วย ฉันยังไม่ได้ทดสอบ แต่ฉันคิดว่าคีย์ "ปิดใช้งาน" หมายความว่าคุณไม่สามารถเปิดใช้งานหรือเพิ่มอย่างชัดเจนโดยไม่ต้องแก้ไขไฟล์


นี่เป็นเพียงลายนิ้วมือที่สำคัญ ยังคงมีกุญแจส่วนตัวที่เก็บอยู่ใน ~ / .gnupg / private-keys-v1.d /
dlitz

แต่พวกเขาจะไม่เห็นตัวแทนเอสเอสอีกต่อไป
larsks

13

ใช่ดูเหมือนว่าssh -dจะหักกับตัวแทนของ gpg นี่คือวิธีแก้ปัญหาโดยใช้คำสั่งอื่น

รันgpg-connect-agentคำสั่งจาก commandline เพื่อเชื่อมต่อกับเอเจนต์ จากนั้นให้ป้อนคำสั่งนี้เพื่อแสดงรายการคีย์ ssh

KEYINFO --ssh-list --ssh-fpr

คุณควรเห็นบางสิ่งเช่น:

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

ตอนนี้เพื่อลบออกจากตัวแทน:

DELETE_KEY 3365433C34421CC53B52C9A82169FD2328CF610B

มันจะพูดว่า:

OK

ตอนนี้ออกด้วยคำสั่ง BYE:

ลาก่อนตกลงปิดการเชื่อมต่อ

ตอนนี้ยืนยันด้วยssh-add -lและคุณจะเห็นว่ามันหายไปจริง


ฉันได้รับพรอมต์หลังจากพิมพ์DELETE_KEY <id>ให้ข้อมูลเพิ่มเติมเกี่ยวกับไฟล์ที่มาจาก ... มีประโยชน์ในการหาว่าคีย์ตัวไหนเป็นตัวเลือกไหน
Sam Mason

1

หากคุณต้องการสคริปต์สำหรับสิ่งนี้:

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

ฉันไม่ใช่ผู้เชี่ยวชาญที่นี่ดังนั้นฉันจึงให้สคริปต์ง่ายๆที่ฉันใช้ ไม่มีอะไรแฟนซี ไม่มีอะไรลึก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.