매우 짜증나는 문제가 있습니다. gpg-agent
여러 번 재부팅한 후에도 여전히 SSH 키가 남아 있어 키링에서 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
다른 모든 것은 잘 작동하지만 이 파일이 어딘가에 캐시되어 있으므로 삭제해야 합니다.
답변1
네, ssh -d
gpg의 브로커가 고장난 것 같습니다. 다음은 다른 명령을 사용하는 해결 방법입니다.
명령줄에서 명령을 실행하여 gpg-connect-agent
에이전트에 연결합니다. 그런 다음 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
보면 실제로 사라진 것을 확인할 수 있습니다.
답변2
대부분의 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
의견에서 알 수 있듯이 키를 삭제하거나 를 사용하여!
키를 제거할 수 있습니다.
답변3
스크립트를 원하는 경우:
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
저는 전문가가 아니므로 제가 사용하는 간단한 스크립트를 제공하겠습니다. 멋진 것은 없습니다. 심오한 것은 없습니다.