개인 키에 액세스할 때 GPG가 중단됩니다.

개인 키에 액세스할 때 GPG가 중단됩니다.

나는 PGP 키로 git 커밋에 서명하는 것을 좋아해서 git commit -SPGP 키 비밀번호를 묻는 대신 git이 멈추기 시작했을 때 꽤 충격을 받았습니다. 몇 달 동안 GPG 설정을 변경하지 않았으며 그 이후로 아무런 문제 없이 여러 번 커밋했습니다. 또한 gpg를 사용하여 개인 키를 보려고 하면 gpg -K중단됩니다. 그러나 gpg -k공개 키 보기를 실행하면 정상적으로 목록이 반환됩니다. 누군가가 이 문제의 원인과 해결 방법을 이해할 수 있기를 바랍니다.

답변1

나는 정확한 문제에 직면했습니다 (OSX Sierra 10.12.6, gpg/GnuPG 2.2.5)

중단되는 명령:

gpg -K # --list-secret-keys
gpg -d # --decrypt
gpg --edit-key
gpgconf --kill gpg-agent

내 솔루션은 언급 된 것과 동일합니다남자위의 대부분의 다른 방법과 동일합니다(예: gpg-agent 종료).GPG 에이전트를 다시 시작하는 방법또한 중단됩니다.

# Solution    
pkill -9 gpg-agent

그런 다음 git commit에 서명하기 위해 언급한 대로 tty env를 설정했습니다.카스위에도 그렇고 위에도 그렇고gpg가 커밋 개체에 서명하지 못했습니다..

export GPG_TTY=$(tty)

답변2

$ ps aux | grep -E "gpg-agent"
alper  28970   0.0   92436   3284   15:31 0:00 /usr/bin/gpg-agent --supervised

이 출력 변수에는 28970.


from subprocess import Popen, PIPE
import signal

def kill_process_by_name(process_name):
    p1 = Popen(["ps", "auxww"], stdout=PIPE)
    p2 = Popen(["grep", "-E", process_name], stdin=p1.stdout, stdout=PIPE)
    p1.stdout.close()  # noqa
    p3 = Popen(["awk", "{print $2}"], stdin=p2.stdout, stdout=PIPE)
    p2.stdout.close()
    output = p3.communicate()[0].decode("utf-8").strip()
    lines = output.splitlines()  # awk may return more than one pid number
    for pid in lines:
        if pid.isnumeric():
            os.kill(int(pid), signal.SIGKILL)

관련 정보