Tôi đang chạy Fedora 22. Tôi đang cố gắng thiết lập GnuPG để xác thực các kết nối SSH của mình bằng khóa con xác thực PGP được đặt trên Neo Yubikey của tôi.
Tôi có một đơn vị systemd bắt đầu tác nhân gpg như sau:
/usr/bin/gpg-agent --homedir=%h/.gnupg --daemon --use-standard-socket
Và tôi đã kích hoạt hỗ trợ SSH trong cấu hình:
enable-ssh-support
pinentry-program /usr/bin/pinentry-gtk
Các bộ phận khác của thiết lập bao gồm thêm các keygrip khóa của tôi vào ~/.gnupg/sshcontrol
tập tin, thêm tôi khóa công khai để các máy chủ từ xa và khai báo biến môi trường .
Nhìn toàn cầu vào các bản ghi khác nhau mà thiết lập dường như hoạt động, tôi có thể thấy rằng SSH tìm thấy khóa nhưng thực sự không ký được với nó. Nếu tôi nhìn vào nhật ký từ gpg-agent
, tôi có thể thấy rằng nó không khởi chạy pinentry
chương trình và do đó, không yêu cầu mã PIN:
2015-07-22 23:23:28 gpg-agent[6758] DBG: error calling pinentry: Ioctl() inappropriate for a device <Pinentry>
2015-07-22 23:23:28 gpg-agent[6758] DBG: chan_8 -> BYE
2015-07-22 23:23:28 gpg-agent[6758] DBG: chan_7 -> CAN
2015-07-22 23:23:28 gpg-agent[6758] DBG: chan_7 <- ERR 100663573 The IPC call was canceled <SCD>
2015-07-22 23:23:28 gpg-agent[6758] smartcard signing failed: Ioctl() inappropriate for a device
2015-07-22 23:23:28 gpg-agent[6758] ssh sign request failed: Ioctl() inappropriate for a device <Pinentry>
Những gì chúng ta thấy ở đây là khi được sử dụng kết hợp với SSH, một số cuộc gọi ioctl bị lỗi khi gọi pinentry. Tuy nhiên nếu tôi chạy như sau:
$ echo "Test" | gpg2 -s
Cửa sổ PIN đang bật lên và tất cả đều hoạt động tốt.
Bạn có thể giúp tôi hiểu những gì đang xảy ra với thiết lập và SSH này không?
tar
đểgpg2
trên Mac OS X và câu trả lời vigo của giải quyết nó cho tôi.