GPG Ditangguhkan Saat Kunci Pribadi Diakses

16

Saya suka menandatangani komit git saya dengan kunci PGP saya, jadi saya cukup khawatir ketika saya pergi ke git commit -Stetapi alih-alih meminta frasa sandi kunci PGP saya, git baru mulai menggantung. Saya belum melakukan perubahan pada pengaturan GPG saya dalam beberapa bulan dan telah membuat banyak komitmen sejak saat itu tanpa masalah. Selain itu, ketika saya mencoba untuk melihat kunci pribadi saya dengan gpg -K, gpg hang. Namun, ketika saya menjalankan gpg -kuntuk melihat kunci publik saya, itu mengembalikan daftar seperti biasa. Semoga seseorang akan memiliki ide tentang apa yang menyebabkan masalah ini dan bagaimana cara memperbaikinya.

John Leuenhagen
sumber
Apakah Anda melakukan ini lebih dari ssh? jika demikian, apakah Anda memiliki gpg-agentatau setup serupa di .bashrc (dll) dari sistem jarak jauh, dan dikonfigurasi untuk meminta pada tampilan X jarak jauh atau serupa? Saya pernah memiliki masalah yang sama di masa lalu (misalnya ssh-ing dari terminal pada kotak mythtv saya ke mesin desktop saya untuk menjalankan sesuatu yang membutuhkan gpg. Juga memiliki masalah serupa dengan ssh-agent), dan saya brute-force "memperbaiki" dengan export GPG_TTY=$(tty)di .bashrc, untuk memastikan prompt selalu di tty saat ini. saya tidak tahan GUI passwd meminta pula.
cas
1
Tidak, saya tidak melakukannya atas SSH. Yang aneh adalah saya menemukan bahwa jika saya membunuh gpg-agent, gpg bekerja lagi. Saya mencoba mencari tahu mengapa dan membuat solusi jangka panjang.
John Leuenhagen
Saya baru saja memperhatikan di gpg-agenthalaman manual bahwa pengaturan GPG_TTY seperti di atas bukanlah sesuatu yang saya peretas untuk bekerja, itu diperlukan. Halaman manual mengatakan Anda harus selalu meletakkannya di .bashrc Anda seperti yang saya lakukan, dan juga mengatakan It is important that this environment variable always reflects the output of the tty command.- itu pasti dari mana saya mendapatkannya. Satu hal lagi yang perlu Anda perhatikan adalah program pinentry yang digunakan oleh gpg-agent. Saya memiliki set tambang (di ~/.gnupg/gpg-agent.conf) ke/usr/bin/pinentry-curses
cas

Jawaban:

21

Saya menemukan masalah persis ini (OSX Sierra 10.12.6, gpg / GnuPG 2.2.5)

Perintah yang akan digantung:

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

Solusi saya sama dengan yang disebutkan oleh John di atas (mis. Kill gpg-agent) karena kebanyakan metode lain tentang bagaimana-bisa-i-restart-gpg-agent juga akan hang.

# Solution    
pkill -9 gpg-agent

Kemudian untuk menandatangani komit git saya mengatur tty env seperti yang disebutkan oleh cas di atas dan juga di gpg-gagal-untuk-menandatangani-komit-objek .

export GPG_TTY=$(tty)
CoffeeMonster
sumber
Jadi, apakah Anda harus membunuh kembali gpg setiap kali Anda reboot? Itulah yang harus saya lakukan sejak lama. Saya harap kami akan menemukan cara untuk memperbaikinya untuk selamanya.
John Leuenhagen
Baru mulai mengalami masalah sendiri. Membunuh gpg-agenttampaknya menjadi satu-satunya cara untuk membuatnya bekerja kembali.
Alexis Tyler