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

주석에서 알 수 있듯이 키를 삭제하여 키를 제거하거나 a로 키를 비활성화 할 수 있습니다 !. 테스트하지는 않았지만 키를 "비활성화"하면 파일을 편집하지 않고 명시 적으로 활성화하거나 추가 할 수 없습니다.


이것들은 단지 주요 지문입니다. ~ / .gnupg / 개인 - 키 - v1.d /에 저장된 개인 키 여전히있다
dlitz

그러나 더 이상 ssh 에이전트에 표시되지 않습니다.
Larsks

13

예, 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 명령으로 종료하십시오.

BYE OK 결선 연결

이제 확인하여 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.