gpg-agent를 사용할 때에도 gpg가 여전히 비밀번호를 요구하는 이유는 무엇입니까?

gpg-agent를 사용할 때에도 gpg가 여전히 비밀번호를 요구하는 이유는 무엇입니까?

다음과 같이 gpg-agent를 시작합니다.

eval `gpg-agent --daemon --preset`

그리고 이 터미널 창에서 권장되는 대로 gpg-preset-passphrase 명령을 사용하십시오.

echo secretpassword | /usr/libexec/gpg-preset-passphrase --preset KEYGRIPID

그런 다음 나는이 답변비밀번호가 실제로 올바르게 캐시되었는지 확인하세요.

echo 'GET_PASSPHRASE --no-ask KEYGRIPID Err Pmt Des'|gpg-connect-agent |
  perl -pe 's/([0-9a-fA-F]{2})/chr(hex $1)/eg'

지금 gpg를 실행하여 무언가에 서명하거나 암호화하면 비밀번호를 묻는 메시지가 표시됩니다. 이런 일은 일어나서는 안 됩니다.

gpg -u KEYGRIPID --clearsign --batch somefile.txt

<curses-based prompt>

비밀번호를 올바르게 입력하고 gpg-sign 명령을 다시 실행하면 프롬프트가 표시되지 않습니다. 이는 비록 다르지만 비밀번호가 캐시되었음을 나타냅니다.

GPG 버전 2.0.14

답변1

이것은 아니다건반하지만지문열쇠.이것은 참고자료입니다. 원하는 값을 추출하는 데 도움이 되는 추악한 Perl 스크립트는 다음과 같습니다.

gpg -K --fingerprint | 
perl -lne '$/="\n\n"' \
 -e if ( ($len,$grip,$fp)=/^sec\s+(\w+)\/([0-9A-Z]+).* fingerprint = (.*?)\s+uid\s/ms)' \
 -e { $fp =~ s/\s*//g; print "$grip $fp";}'

산출:

EF2141BE 24C5202D6905CB0A5C94AB36134E3618EF6141B8
1BA3D65B 484EE4F3DC2595FAF91F51A9731342954BAFD753

두 번째 열을 복사하여 사전 설정 명령에 전달합니다.

echo secretpassword | /usr/libexec/gpg-preset-passphrase --preset 

관련 정보