ฉันใช้gpg-agent
สำหรับการจัดการทั้งอัตลักษณ์ของ PGP e SSH เอเจนต์เริ่มต้นด้วยสคริปต์เช่นนี้
gpg_agent_env="$XDG_CACHE_HOME/gpg-agent.env"
export GPG_TTY="$(tty)"
if ! ps -U "$USER" -o ucomm | grep -q gpg-agent; then
eval "$({gpg-agent --daemon | tee $gpg_agent_env} 2> /dev/null)"
else
source "$gpg_agent_env" 2> /dev/null
fi
ซึ่งมีที่มาเมื่อใดก็ตามที่ฉันเรียกใช้เปลือกโต้ตอบ ทุกอย่างทำงานได้ดีกับการตั้งค่านี้ แต่มีปัญหา สมมติว่าฉัน:
- เปิดเทอร์มินัล (เรียกตัวแทนในพื้นหลัง) และเริ่มทำงาน
- หลังจากที่ในขณะที่เปิดสถานีที่สอง
- ดำเนินการที่ต้องป้อนวลีรหัสผ่านในเทอร์มินัลที่สอง
ณ จุดนี้gpg-agent
จะเริ่มpinentry-curses
พร้อมท์ข้อความรหัสผ่าน แต่จะทำเช่นนี้ในเทอร์มินัลแรกซึ่งส่งผลให้เอาต์พุตผสมกับสิ่งที่กำลังทำงานอยู่ (โดยปกติจะเป็นตัวแก้ไขข้อความ) โดยไม่มีวิธีการเริ่มโปรแกรมหรือหยุด pinentry (เริ่มใช้ 100% cpu และฉันต้องฆ่ามัน)
ฉันต้องทำอะไรผิดที่นี่ ใครมีประสบการณ์นี้
ปรับปรุง:
ฉันคิดว่าสิ่งนี้เกิดขึ้นเฉพาะเมื่อมีข้อความแจ้งให้ปลดล็อคคีย์ SSH ซึ่งมีลักษณะเช่นนี้ในขณะที่พร้อมท์สำหรับคีย์ PGP จะเปิดขึ้นบน tty ที่ถูกต้อง (เช่นปัจจุบัน)
export GPG_TTY="$(tty)"
แก้ไขสำหรับฉัน