Achtung
Der Text wurde seit dreieinhalb Jahren nicht wesentlich verändert. Er ist veraltet. Auch die englischsprachige Quelle ist nicht mehr verfügbar.
GnuPG-Agent ist ein Agent wie ssh-agent, damit man sein Passwort nicht immer angeben muss. Weiterhin erscheint bei Anwendungen, die keinen Passwort-Dialog unterstützen, doch ein Dialog
Homepage: www.gnupg.org
Lizenz: GPL
Mini-Howto
(Quelle: http://jdurand.home.cern.ch/jdurand/cern_ca_and_mail/)
Leider ist gnupg-Agent nur in der neuesten Beta-GnuPG-Version enthalten, weshalb auf diese geupdated werden muss. Dies ist ein Risiko, weshalb man wissen muss, was man tut. Sei gewarnt!
Unter Debian sind folgende Schritte notwendig:
deb http://jdurand.home.cern.ch/jdurand/debian binary/ der sources.list hinzufügen. gnupg updaten und pinentry-gtk installieren.
.gnupg/gpg-agent.conf anlegen: {{{pinentry-program /usr/bin/pinentry-gtk no-grab default-cache-ttl 1800 #log-file /tmp/mygpgsm.log #debug-all #verbose }}}
in .gnupg/gpg.conf use-agent aktivieren.
gpg-agent mittels eval `gpg-agent --daemon` starten. Und von dieser Shell aus alle gnupg-Programme starten.
Ein kleines Skript gibt's auch, falls man nur einen Daemon gleichzeitig laufen haben möchte:
#!/bin/bash
#gpg-agent-start.sh
has_dcop() {
        #test whether dcop is running for this user
        which dcop &>/dev/null
        if [ $? -ne 0 ]; then
                return 1
        else
                test `dcop --user ${USER} --list-sessions |wc -l` -gt 1
                return $?
        fi
}
export_info() {
        GPG_AGENT_INFO="$@"
        export GPG_AGENT_INFO
        if has_dcop; then
                echo "Setting the info in the klauncher startup environment"
                dcop klauncher klauncher setLaunchEnv GPG_AGENT_INFO "${GPG_AGENT_INFO}"
        fi
}
echo "Starting gpg-agent"
if [ -x /usr/bin/gpg-agent ]; then
  if [ -f ${HOME}/.gpg-agent-info ]; then
    OLD_GPG_AGENT=`cat ${HOME}/.gpg-agent-info`
    CHECK_PID=`echo ${OLD_GPG_AGENT}|cut -d ":" -f 2`
    PROG=`ps -p ${CHECK_PID} -o comm= |tail -n -1`
    if [ "${PROG}x" != "gpg-agentx" ]; then
      rm ${HOME}/.gpg-agent-info
    else
#      export_info "${OLD_GPG_AGENT}"
      export GPG_AGENT_INFO=${OLD_GPG_AGENT}
    fi
    unset OLD_GPG_AGENT
    unset CHECK_PID
    unset PROG
  fi
  if [ ! -f ${HOME}/.gpg-agent-info ]; then
    eval "`gpg-agent --daemon 2>${HOME}/.gpg-agent.log |cut -d \; -f 1`"
#    export_info "${GPG_AGENT_INFO}"
    export GPG_AGENT_INFO=${GPG_AGENT_INFO}
    echo $GPG_AGENT_INFO >${HOME}/.gpg-agent-info
  fi
fi
unset has_dcop
unset export_infoSchöner ist es, wenn man es über die .xinitrc (oder .xprofile) macht, hier kann man mit einer Zeile . bin/gpg-agent-start.sh das Skript gleich nach dem Einloggen laufen lassen.
Viel Erfolg! 
 
