Jeg har en linje i gpg.conf-filen min som sier use-agent
.
Jeg forstår at dette refererer til til gpg-agent som er en demon. Mannsiden sier «gpg-agent er en demon for å administrere hemmelige (private) nøkler uavhengig av hvilken som helst protokoll. Den brukes som en backend for gpg og gpgsm, så vel som for et par andre verktøy.»
Kan noen forklare hva dette betyr i sammenheng med gpg? Hva er poenget med gpg-agent?
Jeg har GPG 1.4 for øyeblikket.
- Hvordan kan jeg vite om agenten kjører? Jeg vet faktisk ikke engang om gpg-agent er installert med den grunnleggende GPG 1.4-pakken.
- Hvordan kan jeg starte den, hvis den ikke kjører?
- Hvordan kan jeg stoppe det, hvis det kjører?
Svar
Gpg-agent er et program som kjører i bakgrunnen (en daemon ) og lagrer hemmelige GPG-nøkler i minnet. Når en GPG-prosess trenger nøkkelen, kontakter den det kjørende gpg-agentprogrammet gjennom et -stikkontakt og ber om nøkkelen. Hvis agentprosessen har nøkkelen, gir den den til gpg. Hvis den ikke gjør det, prøver den å laste den krypterte nøkkelen fra nøkkelringen din, og ber deg om nøkkelens passordfrase. Når agenten har fått den dekrypterte nøkkelen, overfører den den til gpg-prosessen. I tillegg til GPG-nøkler, kan Gpg-agent på samme måte lagre SSH-nøkler og gi dem til SSH-prosesser, som ssh-agent
program som følger med SSH.
Hovedpoenget med å bruke en nøkkelagent er slik at du trenger ikke å skrive passordfrasen hver gang du bruker nøkkelen. Agenten beholder nøkkelen i minnet fra tid til annen. GPG selv kan ikke gjøre det fordi prosessen avsluttes når den har gjort jobben sin.
En annen ting som en nøkkelagent kan gjøre er å la GPG kjøre på en ekstern maskin for å skaffe nøkler i den lokale agenten ( som kan laste dem fra en lokal fil og be om passordfrasen). Gpg-agent kan ikke gjøre dette ennå, det er en planlagt funksjon . SSH har hatt agentoverføring i veldig lang tid. (Dette er en grunn til ikke å bruk gpg-agent for SSH-nøkler.)
GPG 1.x eller 2.0.x vet at agenten kjører fordi GPG_AGENT_INFO
variabelen er angitt. Denne variabelen inneholder plasseringen av kontakten for å kommunisere med agenten, samt agentens prosess-ID. GPG 2.1 plasserer alltid agentkontakten i ~/.gnupg
. GPG 2.x starter alltid en agent prosess hvis en ikke kjører.
Du kan starte agenten ved å kjøre gpg-agent
. Hvis du vil beholde en agentprosess som en del av økten din, kan du erstatte påkallingen til øktbehandling med gpg-agent my-session-manager
; noen distribusjoner setter opp dette automatisk. GPG starter automatisk agenten, og GPG 2.1 finner i tillegg en agent som kjører uten at du trenger en miljøvariabel, så du trenger ikke å starte den på denne måten med mindre du bruker en eldre versjon av GPG eller du bruker agenten til å lagre andre typer av nøkler som SSH.
Du kan sende agenten kommandoene med gpg-connect-agent
skallkommando. Send kill
kommando til drep agentprosessen (eller send det et signal).
Gpg-agent sendes med GPG selv. Noen distribusjoner pakker det separat.
Kommentarer
- " Når en GPG-prosess trenger nøkkelen, kontakter den det kjørende gpg-agentprogrammet gjennom en stikkontakt og ber om nøkkelen. Hvis agentprosessen har nøkkelen, den gir den til gpg. " Litt misvisende. Agenten gir ikke nøkkel til klientprosessen. I stedet er den perfekt orms handlinger ved hjelp av nøkkelen, på vegne av klientprosessen. (Klienten gir agenten noe å signere, kryptere eller dekryptere, og agenten gjør det.) Når du bruker en agent, får SSH- og GPG-klientprogramvaren aldri tilgang til selve nøkkelen.
- " Gpg-agent kan ' ikke gjøre dette ennå, det er en planlagt funksjon. SSH har hatt agentspedisjon i veldig lang tid. (Dette er en grunn til ikke å bruke gpg-agent for SSH-nøkler.) " Ikke helt sant. gpg-agent fungerer fint med videresending av SSH-agenter. Jeg bruker den hver dag. SSH-klienten håndterer videresending, gpg-agent er egentlig ikke involvert i det. Det som ikke støttes, er at GPG seg selv snakker eksternt med en agent.