Gpg-agent เป็นโปรแกรมที่ทำงานในพื้นหลัง ( daemon ) และเก็บรหัสลับ GPG ในหน่วยความจำ เมื่อกระบวนการ GPG ต้องการคีย์มันจะติดต่อโปรแกรม gpg-agent ที่เรียกใช้ผ่านซ็อกเก็ตและขอกุญแจ หากกระบวนการตัวแทนมีคีย์มันจะให้มันไปยัง gpg หากไม่เป็นเช่นนั้นจะพยายามโหลดคีย์ที่เข้ารหัสจากพวงกุญแจของคุณและแจ้งให้คุณใส่ข้อความรหัสผ่านของคีย์ เมื่อตัวแทนได้รับกุญแจถอดรหัสแล้วมันจะส่งผ่านไปยังกระบวนการ gpg นอกจากคีย์ GPG แล้ว Gpg-agent ยังสามารถจัดเก็บคีย์ SSH ในทำนองเดียวกันและมอบให้กับกระบวนการ SSH เช่นssh-agent
โปรแกรมที่มาพร้อมกับ SSH
จุดหลักของการใช้ตัวแทนกุญแจคือเพื่อให้คุณไม่ต้องพิมพ์ข้อความรหัสผ่านทุกครั้งที่คุณใช้รหัส เอเจนต์เก็บคีย์ในหน่วยความจำจากหนึ่งไปอีกครั้ง GPG เองไม่สามารถทำเช่นนั้นได้เนื่องจากกระบวนการยุติลงเมื่อทำงานเสร็จ
อีกสิ่งหนึ่งที่ตัวแทนกุญแจสามารถทำได้คืออนุญาตให้ GPG ทำงานบนเครื่องระยะไกลเพื่อรับกุญแจในตัวแทนท้องถิ่น (ซึ่งอาจโหลดพวกเขาจากไฟล์ภายในเครื่องและแจ้งให้คุณใส่รหัสผ่าน) GPG ตัวแทนไม่สามารถทำเช่นนี้ยังจะเป็นคุณลักษณะที่วางแผนไว้ SSH มีตัวแทนส่งต่อเป็นเวลานานมาก (นี่คือเหตุผลที่จะไม่ใช้ gpg-agent สำหรับคีย์ SSH)
GPG 1.x หรือ 2.0.x รู้ว่าตัวแทนกำลังทำงานอยู่เนื่องจากGPG_AGENT_INFO
มีการตั้งค่าตัวแปร ตัวแปรนี้มีตำแหน่งของซ็อกเก็ตที่จะสื่อสารกับตัวแทนเช่นเดียวกับ ID กระบวนการของตัวแทน GPG 2.1 จะวางซ็อกเก็ตเอเจนต์ไว้~/.gnupg
เสมอ GPG 2.x เริ่มต้นกระบวนการตัวแทนเสมอหากไม่ได้ทำงานอยู่
gpg-agent
คุณสามารถเริ่มต้นตัวแทนโดยเพียงแค่การทำงาน หากคุณต้องการให้กระบวนการตัวแทนเป็นส่วนหนึ่งของเซสชันของคุณคุณสามารถแทนที่การร้องขอของผู้จัดการเซสชันโดยgpg-agent my-session-manager
; การแจกแจงบางอย่างจะตั้งค่านี้โดยอัตโนมัติ GPG จะเริ่มตัวแทนโดยอัตโนมัติและ GPG 2.1 จะค้นหาตัวแทนที่ทำงานอยู่เพิ่มเติมโดยไม่จำเป็นต้องมีตัวแปรสภาพแวดล้อมดังนั้นคุณไม่จำเป็นต้องเริ่มต้นด้วยวิธีนี้เว้นแต่คุณจะใช้ GPG รุ่นเก่ากว่าหรือใช้ตัวแทนเพื่อเก็บประเภทอื่น ๆ ของคีย์เช่น SSH
คุณสามารถส่งคำสั่งตัวแทนด้วยgpg-connect-agent
คำสั่งเชลล์ ส่งkill
คำสั่งเพื่อฆ่ากระบวนการตัวแทน (หรือส่งสัญญาณ)
ตัวแทน Gpg มาพร้อมกับ GPG เอง การแจกแจงบางอย่างจะแยกมัน