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)

AltStyle によって変換されたページ (->オリジナル) /