GPG bị treo khi khóa riêng được truy cập


15

Tôi thích ký cam kết git của mình bằng khóa PGP của mình, vì vậy tôi đã khá hoảng hốt khi đi đến git commit -Snhưng thay vì nhắc mật khẩu khóa PGP của mình, git chỉ bắt đầu treo. Tôi đã không thay đổi thiết lập GPG của mình trong vài tháng và đã thực hiện nhiều cam kết kể từ đó mà không gặp vấn đề gì. Ngoài ra, khi tôi cố gắng xem các khóa riêng tư của mình gpg -K, gpg bị treo. Tuy nhiên, khi tôi chạy gpg -kđể xem các khóa công khai của mình, nó sẽ trả về danh sách như bình thường. Hy vọng ai đó sẽ có một số ý tưởng về những gì gây ra vấn đề này và làm thế nào để khắc phục nó.


bạn đang làm điều này trên ssh? nếu vậy, bạn có gpg-agenthoặc thiết lập tương tự trong .bashrc (vv) của hệ thống từ xa và được định cấu hình để nhắc trên màn hình X của điều khiển từ xa hoặc tương tự không? Tôi đã từng gặp vấn đề tương tự trong quá khứ (ví dụ: ssh-ing từ một thiết bị đầu cuối trên hộp huyền thoại của tôi đến máy tính để bàn của tôi để chạy một cái gì đó yêu cầu gpg. cũng có vấn đề tương tự ssh-agent), và tôi đã cố gắng "sửa" nó export GPG_TTY=$(tty)trong .bashrc, để đảm bảo lời nhắc luôn ở trên tty hiện tại. Tôi không thể đứng nhắc nhở qua mật khẩu GUI.
cas

1
Không, tôi không làm việc đó qua SSH. Điều kỳ lạ là tôi thấy rằng nếu tôi giết gpg-agent, gpg lại hoạt động. Tôi đang cố gắng tìm hiểu tại sao và đưa ra một giải pháp lâu dài.
John Leuenhagen

Tôi chỉ nhận thấy trong gpg-agenttrang hướng dẫn cài đặt GPG_TTY như trên không phải là thứ tôi đã hack để làm việc, điều đó là bắt buộc. Trang người đàn ông nói rằng bạn phải luôn đặt nó trong .bashrc của bạn như tôi đã làm và cũng nói It is important that this environment variable always reflects the output of the tty command.- đó phải là nơi tôi đã nhận được nó. Một điều khác bạn cần cẩn thận là chương trình pinentry được sử dụng bởi gpg-agent. Tôi đã cài đặt (in ~/.gnupg/gpg-agent.conf) thành/usr/bin/pinentry-curses
cas

Câu trả lời:


20

Tôi đã gặp vấn đề chính xác này (OSX Sierra 10.12.6, gpg / GnuPG 2.2.5)

Các lệnh sẽ treo:

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

Giải pháp của tôi cũng giống như John đã đề cập ở trên (ví dụ: kill gpg-agent) vì hầu hết các phương pháp khác trên how-can-i-restart-gpg-agent cũng sẽ bị treo.

# Solution    
pkill -9 gpg-agent

Sau đó, để ký cam kết git, tôi đặt tty env như được đề cập bởi cas ở trên và tại gpg-fail-to-sign-commit-object .

export GPG_TTY=$(tty)

Vì vậy, bạn có phải giết lại gpg mỗi khi bạn khởi động lại không? Đó là những gì tôi đã phải làm trong một thời gian dài bây giờ. Tôi hy vọng chúng ta sẽ tìm ra cách khắc phục nó cho tốt.
John Leuenhagen

Chỉ bắt đầu có vấn đề bản thân mình. Giết chết gpg-agentdường như là cách duy nhất để làm cho nó hoạt động trở lại.
Alexis Tyler
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.