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!
