Đại lý GPG không xóa khóa SSH của tôi khỏi khóa


14

Tôi có một vấn đề thực sự rắc rối. Tôi không thể gpg-agentxóa khóa SSH khỏi khóa của mình và thậm chí nó vẫn tồn tại ở đó sau nhiều lần khởi động lại.

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

Ngay cả khi tôi nói với nó để xóa danh tính:

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

Sau đó tôi nhìn

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

và nó vẫn ở đó.

Trường hợp này đang được lưu trữ? Nó dường như được ghi vào đĩa vì một số lý do, đó là một điều đáng sợ cho một tác nhân SSH để làm. Tôi đang chạy như sau để bắt đầu gpg-agent:

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

Mọi thứ khác đều hoạt động tốt, nhưng nó lưu tập tin này vào đâu đó và tôi cần xóa nó.

Câu trả lời:


15

Như với hầu hết mọi thứ GPG, thông tin đăng nhập ssh được lưu trong .gnupgthư mục, cụ thể là ~/.gnupg/sshcontrol, sẽ trông giống như thế này:

# 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

Như bình luận nói, bạn có thể xóa các phím bằng cách xóa chúng hoặc vô hiệu hóa chúng bằng a !. Tôi chưa kiểm tra, nhưng tôi tưởng tượng rằng "vô hiệu hóa" một khóa có nghĩa là bạn không thể bật hoặc thêm nó một cách rõ ràng mà không cần chỉnh sửa tệp.


Đây chỉ là dấu vân tay quan trọng. Vẫn còn các khóa riêng được lưu trữ trong ~ / .gnupg / private-Keys-v1.d /
dlitz

Nhưng họ không còn nhìn thấy các tác nhân ssh.
larsks

13

Vâng, có vẻ như đã ssh -dbị hỏng với đại lý của gpg. Đây là một cách giải quyết bằng cách sử dụng một lệnh khác.

Chạy gpg-connect-agentlệnh từ dòng lệnh để kết nối với tác nhân. Sau đó, từ các lời nhắc ở đó, nhập lệnh này để liệt kê các phím ssh

KEYINFO --ssh-list --ssh-fpr

Bạn sẽ thấy một cái gì đó như:

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

Bây giờ, để loại bỏ khỏi tác nhân:

DELETE_KEY 3365433C34421CC53B52C9A82169FD2328CF610B

Nó sẽ nói:

OK

Bây giờ, thoát khỏi lệnh BYE:

Kết nối đóng BYE OK

Bây giờ, xác minh với ssh-add -lvà bạn sẽ thấy rằng nó là thật.


Tôi đã nhận được một lời nhắc sau khi gõ DELETE_KEY <id>cung cấp thêm thông tin về việc tệp đến từ đâu rất hữu ích để tìm ra khóa nào
Sam Mason

1

Nếu bạn muốn có một kịch bản cho việc này:

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

Tôi không phải là chuyên gia ở đây, vì vậy tôi chỉ đưa ra một kịch bản đơn giản mà tôi sử dụng. Không có gì lạ mắt. Không có gì sâu sắc.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.