GPG 에이전트가 키링에서 내 SSH 키를 제거하지 않습니다.

GPG 에이전트가 키링에서 내 SSH 키를 제거하지 않습니다.

매우 짜증나는 문제가 있습니다. 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 -dgpg의 브로커가 고장난 것 같습니다. 다음은 다른 명령을 사용하는 해결 방법입니다.

명령줄에서 명령을 실행하여 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

저는 전문가가 아니므로 제가 사용하는 간단한 스크립트를 제공하겠습니다. 멋진 것은 없습니다. 심오한 것은 없습니다.

관련 정보