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_info

Schö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! :)


KategorieSicherheit

GnuPG/Agent (zuletzt geändert am 2009-01-10 10:22:23 durch dslb-084-057-051-145)