ฉันกำลังใช้งาน Fedora 22 ฉันกำลังพยายามตั้งค่า GnuPG เพื่อให้การเชื่อมต่อ SSH ของฉันผ่านการรับรองความถูกต้องโดยใช้คีย์ย่อยการรับรองความถูกต้อง PGP ของฉันซึ่งอยู่ใน Yubikey Neo ของฉัน
ฉันมีหน่วย systemd เริ่มต้น gpg-agent ดังต่อไปนี้:
/usr/bin/gpg-agent --homedir=%h/.gnupg --daemon --use-standard-socket
และฉันได้เปิดใช้งานการสนับสนุน SSH ในการกำหนดค่า:
enable-ssh-support
pinentry-program /usr/bin/pinentry-gtk
ส่วนอื่น ๆ ของการติดตั้งรวมถึงการเพิ่มkeygripของคีย์ของฉันไปที่~/.gnupg/sshcontrol
ไฟล์เพิ่มของฉันคีย์สาธารณะไปยังพื้นที่ห่างไกลและประกาศตัวแปรสภาพแวดล้อม
การดูบันทึกต่าง ๆ ที่การตั้งค่าดูเหมือนจะใช้งานได้ทั่วโลกฉันจะเห็นว่า SSH พบกุญแจ แต่จริง ๆ แล้วไม่สามารถลงชื่อด้วยได้ หากฉันดูบันทึกจากgpg-agent
ฉันจะเห็นว่ามันไม่สามารถเปิดpinentry
โปรแกรมและดังนั้นจึงไม่ขอรหัส 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>
สิ่งที่เราเห็นที่นี่คือเมื่อใช้ร่วมกับ SSH การเรียก ioctl บางอย่างล้มเหลวเมื่อเรียก pinentry อย่างไรก็ตามถ้าฉันเรียกใช้ต่อไปนี้:
$ echo "Test" | gpg2 -s
หน้าต่าง PIN ปรากฏขึ้นและทำงานได้ดี
คุณช่วยฉันเข้าใจไหมว่าเกิดอะไรขึ้นกับการตั้งค่านี้และ SSH
tar
ไปยังgpg2
บน Mac OS X และคำตอบของ vigoแก้ไขให้ฉัน