지문없이 강제로 gpg 비밀 키를 삭제하는 방법은 무엇입니까?


11

우연히 GPG 키 링에 대량의 비밀 키 (공개 키 제외)가 생성되어 해당 키를 삭제하는 스크립트를 작성했지만 GPG를 사용하면 그렇게 할 수 없습니다.

$ gpg --batch --yes --delete-secret-keys KEYS
gpg: can't do this in batch mod
gpg: (unless you specify the key by fingerprint)

글쎄, 내가하고있는 일을 알고 있으며 중복 된 키 ID가있을 수 있음을 알고 있지만 다음과 같이 작동하지 않지만 강제로 삭제할 수있는 방법이없는 것 같습니다.

$ yes | gpg --delete-secret-keys KEYS

어떤 생각?

답변:


6

gpg --list-secret-keys --with-colons --fingerprint쉽게 구문 분석 가능한 형식으로 지문 목록을 생성하는 데 사용 합니다. 삭제하려는 키에 해당하는 양식의 선을 잡고 지문 ( )을로 전달하십시오 .fpr:::::::::xxxx:xxxxgpg --batch --delete-secret-keys

다음 명령은 모든 비밀 키 지문을 생성합니다. 삭제하려는 항목 만 선택하십시오!

gpg --list-secret-keys --with-colons --fingerprint | sed -n 's/^fpr:::::::::\([[:alnum:]]\+\):/\1/p'

큰! 지문은 공개 키에서만 사용할 수 있다고 생각했습니다.
Xiè Jìléi

죄송합니다! 내가 잘못, 지문을 가져올 수 없습니다, 명령 yeilds : gpg : key XXXXXXXX : 공개 키가없는 비밀 키-건너 뛴 gpg : 오류 읽기 키 : 비밀 키를 사용할 수 없음 실제로, 나는 왜 ' 예 | ... '작동하지 않으며 유일한 방법은 gpg의 패치라고 생각합니다. 감사합니다
시에 Jìléi

3

나는이 주제가 오래되었다는 것을 알고 있으며 대답은 Gilles와 비슷하지만 질문에 완전히 대답한다고 생각합니다 (OP와 같은 종류의 문제가 있기 때문에).

for i in `gpg --with-colons --fingerprint | grep "^fpr" | cut -d: -f10`; do gpg --batch --delete-secret-keys "$i" ; done

2

Gilles와 Dolanor의 답변을 특정 키를 삭제하려는 경우 유용한 하나의 라이너로 결합했습니다.

gpg --fingerprint --with-colons ${GPG_KEY} |\
    grep "^fpr" |\
    sed -n 's/^fpr:::::::::\([[:alnum:]]\+\):/\1/p' |\
    xargs gpg --batch --delete-secret-keys

원래 질문에 대답하지는 않지만 다른 사람에게는 유용 할 수 있습니다.


1

보관하려는 키를 내보내고 파일을 삭제 한 다음 벨소리를 다시 만드십시오.


차라리 gpg를 패치하고 다시 컴파일하는 것을 선호합니다.
Xiè Jìléi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.