秘密鍵にアクセスすると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)

関連情報