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!