ทำไม gpg-agent จึงสร้างหลายซ็อกเก็ต

Aug 20 2020

เมื่อใช้gpgกับgpg-agentซ็อกเก็ตต่อไปนี้จะถูกสร้างขึ้นใน~/.gnupgไดเร็กทอรีของฉัน:

S.gpg-agent
S.gpg-agent.browser
S.gpg-agent.extra
S.gpg-agent.ssh

ฉันถือว่าS.gpg-agentเป็นgpg-agentซ็อกเก็ตมาตรฐาน แต่คนอื่นมีไว้เพื่ออะไร?

ฉันไม่ได้ใช้ gpg กับ ssh หรือ gpg กับเบราว์เซอร์

กำหนดค่าไว้ที่ไหนสิ่งเหล่านี้ถูกสร้างขึ้นโดยอัตโนมัติ

ฉันสามารถปิดการใช้งานได้หรือไม่?

ฉันต้องการมาตรฐานเท่านั้น S.gpg-agent

ฉันใช้gnupg 2.2.12กับ Debian Buster

คำตอบ

5 PatrickMevzek Aug 21 2020 at 18:09

gpg-agentสามารถมีหลายคนที่มีบุคลิกและส่งมอบบริการที่แตกต่าง

ตัวอย่างเช่นคุณสามารถหยุดการssh-agentทำงานบนกล่องของคุณและใช้gpg-agentแทนการลดลงได้ ... ตราบเท่าที่คุณใช้ซ็อกเก็ตที่เหมาะสมS.gpg-agent.sshเนื่องจากต้องใช้โปรโตคอลที่เหมาะสมsshซึ่งคาดว่าจะมีการหารือ ทำไมถึงมีประโยชน์? ตัวอย่างเช่นจนกระทั่งเมื่อไม่นานมาsshนี้ไม่สามารถใช้คีย์ที่เก็บไว้ใน FIDO2 / U2F ได้ (เช่น Yubikeys) ซึ่งได้รับการเพิ่มใน 8.2 ที่เผยแพร่เมื่อไม่นานมานี้เท่านั้นซึ่งทำให้สิ่งต่าง ๆ ตายได้ง่ายตามที่อธิบายไว้https://blog.snapdragon.cc/2020/02/23/direct-fido2-u2f-support-in-openssh-8-2-on-macos/

ก่อนหน้านั้นgpg-agentจะถูกนำมาใช้เนื่องจากgpgมีการรองรับสิ่ง U2F เหมือนกับการจัดการเช่นสมาร์ทการ์ด นี่เป็นหนึ่งในเอกสารบัญญัติเกี่ยวกับวิธีการดำเนินการดังกล่าว:https://florin.myip.org/blog/easy-multifactor-authentication-ssh-using-yubikey-neo-tokens

ตอนนี้กลับไปที่gpg-agentคู่มือฉบับเต็มอยู่ที่https://www.gnupg.org/documentation/manuals/gnupg/Invoking-GPG_002dAGENT.html#Invoking-GPG_002dAGENT

คุณสามารถค้นหาตัวเลือกทั้งหมดได้ที่ https://www.gnupg.org/documentation/manuals/gnupg/Agent-Options.html#Agent-Options ซึ่งสามารถใส่ไว้ในไฟล์คอนฟิกูเรชันโดยทั่วไป ~/.gnupg/gpg-agent.conf

เราสามารถเรียนรู้ได้เช่น:

  1. เกี่ยวกับสิ่ง.extraนี้เราสามารถเรียนรู้ทั้งวิธีปิดใช้งานและสิ่งที่ใช้สำหรับ:
--extra-socket name

ซ็อกเก็ตพิเศษถูกสร้างขึ้นโดยค่าเริ่มต้นคุณสามารถใช้ตัวเลือกนี้เพื่อเปลี่ยนชื่อซ็อกเก็ต หากต้องการปิดใช้งานการสร้างซ็อกเก็ตให้ใช้“ none” หรือ“ / dev / null” สำหรับชื่อ

ฟังการเชื่อมต่อ gpg-agent ดั้งเดิมบนซ็อกเก็ตที่กำหนด วัตถุประสงค์การใช้งานสำหรับซ็อกเก็ตเสริมนี้คือการตั้งค่าการส่งต่อซ็อกเก็ตโดเมน Unix จากเครื่องระยะไกลไปยังซ็อกเก็ตนี้บนเครื่องภายใน gpg ที่ทำงานบนเครื่องระยะไกลอาจเชื่อมต่อกับ gpg-agent ในเครื่องและใช้คีย์ส่วนตัว ซึ่งจะเปิดใช้งานการถอดรหัสหรือการลงนามข้อมูลบนเครื่องระยะไกลโดยไม่ต้องเปิดเผยคีย์ส่วนตัวกับเครื่องระยะไกล

  1. สำหรับการสนับสนุน ssh .sshหนึ่ง:

--enable-ssh-support

--enable-putty-support

โปรโตคอล OpenSSH Agent ถูกเปิดใช้งานเสมอ แต่ gpg-agent จะตั้งค่าตัวแปร SSH_AUTH_SOCK หากกำหนดแฟล็กนี้

ในโหมดการทำงานนี้เอเจนต์ไม่เพียง แต่ใช้โปรโตคอล gpg-agent เท่านั้น แต่ยังรวมถึงโปรโตคอลตัวแทนที่ใช้โดย OpenSSH (ผ่านซ็อกเก็ตแยกต่างหาก) ดังนั้นจึงควรใช้ gpg-agent แทนการดรอปอินสำหรับ ssh-agent ที่รู้จักกันดี

  1. สำหรับซ็อกเก็ตเบราว์เซอร์และข้อมูลเพิ่มเติมที่คุณสามารถใช้ได้ https://wiki.archlinux.org/index.php/GnuPG#gpg-agent ที่ระบุว่า:

gpg-agentส่วนใหญ่จะใช้เป็นภูตเพื่อขอและแคชรหัสผ่านสำหรับพวงกุญแจ สิ่งนี้มีประโยชน์หากใช้ GnuPG จากโปรแกรมภายนอกเช่นโปรแกรมรับส่งเมล gnupg มาพร้อมกับซ็อกเก็ตผู้ใช้ systemd ซึ่งเปิดใช้งานโดยค่าเริ่มต้น ซ็อกเก็ตเหล่านี้มีgpg-agent.socket, gpg-agent-extra.socket, gpg-agent-browser.socket, และgpg-agent-ssh.socketdirmngr.socket

หลักgpg-agent.socketถูกใช้โดย gpg เพื่อเชื่อมต่อกับgpg-agentdaemon

วัตถุประสงค์การใช้งานgpg-agent-extra.socketบนระบบโลคัลคือการตั้งค่าการส่งต่อซ็อกเก็ตโดเมน Unix จากระบบรีโมต สิ่งนี้ทำให้สามารถใช้ gpg บนระบบรีโมตได้โดยไม่ต้องเปิดเผยคีย์ส่วนตัวกับระบบรีโมต ดู gpg-agent (1) สำหรับรายละเอียด

gpg-agent-browser.socketช่วยให้เว็บเบราเซอร์ในการเข้าถึงภูต GPG ตัวแทน

gpg-agent-ssh.socketสามารถใช้ SSH คีย์แคช SSH เพิ่มโดยโปรแกรม SSH-เพิ่ม ดู #SSH agent สำหรับการกำหนดค่าที่จำเป็น

dirmngr.socketเริ่มจัดการการเชื่อมต่อกับ keyservers ภูต GnuPG

ดังนั้นจึงไม่มีอันตรายใด ๆ ที่จะมีแม้ว่าคุณจะไม่ได้ใช้ก็ตาม หากคุณต้องการแน่ใจว่าไม่มีอยู่จริงคุณสามารถลองใส่สิ่งต่อไปนี้ในไฟล์คอนฟิกูเรชัน gpg-agent:

extra-socket /dev/null
browser-socket /dev/null

ฉันไม่ได้ทดสอบสิ่งนั้นเอกสารไม่ได้พูดถึงbrowser-socketแต่คำถามเก่ากว่านี้:https://askubuntu.com/questions/777900/how-to-configure-gnupgs-s-gpg-agent-socket-location