Sie sind nicht angemeldet.

1

01.11.2009, 23:01

no gpg-agent running in this session

Hallo Forum,
ich hätte da mal ne Frage zum GnuPG Agenten "gpg-agent" (zwecks Passphrasen caching):

Wenn ich den Kamerad von Hand starte erhalte ich folgende Fehlermeldung:

Quellcode

1
2
3
22:28:48 felix@HAL9000: ~/.gnupg$ gpg-agent 
gpg-agent[18072]: can't connect to `/home/felix/.gnupg/S.gpg-agent': No such file or directory
gpg-agent: no gpg-agent running in this session

Er findet also das gewünschte Socket nicht, was ja auch irgendwie logisch ist da es sich irgendwo im /tmp Verzeichnis befindet, z.B. hier

Quellcode

1
/tmp/gpg-ZlOnDe/S.gpg-agent

Wenn ich jetzt von Hand eine Verknüpfung in mein ~/.gnupg Verzeichnis anlege startet gpg-agent problemlos:

Quellcode

1
2
22:29:42 felix@HAL9000: ~/.gnupg$ gpg-agent 
gpg-agent: gpg-agent running and available

und ermöglicht mir so das ersehte Passphrasen caching für pinentry. Soweit so gut.

Bei meiner Suche im Internetz habe ich nun entdeckt, dass es anderen Menschen genauso geht und einer davon (http://blog.schiessle.org/tag/gnupg/) ein tolles script geschrieben hat, welches auch wunderbar funktioniert:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/bash
 
# Decide whether to start gpg-agent daemon.
# Create necessary symbolic link in $HOME/.gnupg/S.gpg-agent
 
SOCKET=S.gpg-agent
PIDOF=`pidof gpg-agent`
RETVAL=$?
 
if [ "$RETVAL" -eq 1 ]; then
	echo "Starting gpg-agent daemon."
	eval `gpg-agent --daemon `
else
	echo "Daemon gpg-agent already running."
fi
 
# Nasty way to find gpg-agent's socket file...
GPG_SOCKET_FILE=`find /tmp/gpg-* -name $SOCKET`
echo "Updating socket file link."
cp -fs $GPG_SOCKET_FILE $HOME/.gnupg/S.gpg-agent


Nun die Frage:
Warum sucht der GnuPG Agent das Socket im ~/.gnupg Verzeichnis und nicht in /tmp?
Wo wird das eventuell konfiguriert?

Spätabendliche Grüße,
Felix

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »make.conf« (04.11.2009, 19:48)


2

04.11.2009, 10:15

Weil der gpg-agent in einem potenitiell multi-user environment nicht daran denkt, in einem globalen, für jeden zugänglichen verzeichnis danach zu stöbern. Dort würde er auf alle möglichen anderen gpg-agent-Teile anderer user treffen und ... tia ... da hat er einfach keinen Bock drauf, eine komplizierte Lösung für ein einfaches probem zu bauen: du als User sollst dich darum kümmern. =)

Deswegen: start des gpg-agent via einens kleinen scripts (bei mit ~/bin/gpg-environment)

Quellcode

1
2
#!/bin/sh
eval $(gpg-agent --daemon --sh --write-env-file ~/.gpg-agent.info)

Dieser schreibt dann das environment file in etwa so:

Quellcode

1
2
 $ cat .gpg-agent.info
GPG_AGENT_INFO=/tmp/gpg-IZZe3Q/S.gpg-agent:4719:1
Das "GPG_AGENT_INFO=/tmp/gpg-IZZe3Q/S.gpg-agent:4719:1" ist auch der Antwortstring des gpg-agents.

Jetzt muss genau diese Variable noch teil der shell werden. Das mache ich selbst in der ~/.bashrc und zwar so:

Quellcode

1
2
3
4
5
6
7
8
9
GPG_TTY=$(tty)
export GPG_TTY

# check for GnuPG
if [ -e ~/bin/gpg-environment ]; then
        if [ "${GPG_AGENT_INFO}" = "" ]; then
                source ~/bin/gpg-environment &> /dev/null
        fi
fi
Liest sich: wenn eine Datei ~/bin/gpg-environment ausführbar ist und noch kein GPG_AGENT_INFO deklarariert ist, dann führe die Datei ~/bin/gpg-environment in der aktuellen Shell aus.

So ist in jedem prozess die Environment-Variable GPG_AGENT_INFO korrekt gesetzt, da ein Login als erstes zumindest eine shell spawned, diese die ~/.bashrc ausliest und in Folge die Environment-Variable für alle Subprozesse korrekt setzt.

.. und dann klappt's auch wieder mit dem nachbarn! =)
http://www.dyle.org
IM-Account (Jabber!) sind auf meiner HP ...
There is no place like /home

http://www.gentooforum.de
http://www.gentoofreunde.org

<div>how to annoy a web developer?</span>

3

04.11.2009, 16:59


...da hat er einfach keinen Bock drauf, eine komplizierte Lösung für ein einfaches probem zu bauen: du als User sollst dich darum kümmern. =)


Okay, mit Deiner wunderbar einleuchtenden Erklärung werde ich das wohl hinkriegen.
Ich bin wieder mal entzückt, dieses Forum ist einfach der Hit!

*thumbsup* und besten Dank,
Felix

4

04.11.2009, 19:47

Sodele,
ich bins nochmal. Irgendwas schein ich hier falsch gemacht bzw. nicht ganz kapiert zu haben.

Folgendermaßen siehts bei mir aus:

gpg-agent läuft:

Quellcode

1
2
19:27:10 felix@HAL9000: ~$ ps aux | grep gpg-agent | grep -v grep
felix     4885  0.0  0.0   2556   616 ?        Ss   19:21   0:00 gpg-agent --daemon --sh --write-env-file /home/felix/.gpg-agent.info


Socket liegt unter:

Quellcode

1
2
3
19:33:16 felix@HAL9000: ~$ ls -l /tmp/
total 16
drwx------ 2 felix felix 4096 Nov  4 19:21 gpg-Jc4ZRe


~/.bashrc sieht so aus:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
...
# gpg-agent socket
GPG_TTY=$(tty)
export GPG_TTY

# check for GnuPG
if [ -e ~/bin/gpg-environment ]; then
        if [ "${GPG_AGENT_INFO}" = "" ]; then
                source ~/bin/gpg-environment &> /dev/null
        fi
fi
...


~/bin/gpg-environment ist angelegt:

Quellcode

1
2
3
19:28:20 felix@HAL9000: ~$ cat ~/bin/gpg-environment 
#!/bin/sh
eval $(gpg-agent --daemon --sh --write-env-file ~/.gpg-agent.info)


.gpg-agent.info existiert:

Quellcode

1
2
19:27:25 felix@HAL9000: ~$ cat .gpg-agent.info 
GPG_AGENT_INFO=/tmp/gpg-Jc4ZRe/S.gpg-agent:4885:1


$GPG_AGENT_INFO hat den korrekten Inhalt:

Quellcode

1
2
19:29:47 felix@HAL9000: ~$ echo $GPG_AGENT_INFO 
/tmp/gpg-Jc4ZRe/S.gpg-agent:4885:1


gpg-agent sagt mir:

Quellcode

1
2
19:30:52 felix@HAL9000: ~$ gpg-agent 
gpg-agent: gpg-agent running and available


Trotzdem werden die passphrasen nicht gecached, lege ich aber eine Verküpfung vom Socket in das ~/.gnupg Verzeichnis an funktionierts wieder. ?(

Der Agent will sein Socket immer noch im .gnupg Ordner finden, aber warum?

5

10.11.2009, 07:15

Hm, ok. Hast du schon mal versucht den gpg-agent im Vordegrund zu laufen? Vlt mittels --verbose ..? Auch ibt es eine Reihe von anderen optionen, die du dir da angucken solltest (bsp --allow-preset-passphrase).
http://www.dyle.org
IM-Account (Jabber!) sind auf meiner HP ...
There is no place like /home

http://www.gentooforum.de
http://www.gentoofreunde.org

<div>how to annoy a web developer?</span>

6

22.11.2009, 03:00

Sorry für die späte Rückmeldung, fast hätte ich das ganze vergessen.

Folgendes habe ich rausgefunden:

1.) Mit dem Eintrag in der .bashrc wird bei jedem Start einer bash ein gpg-agent Prozess gestartet und in /tmp landet jeweils das dazugehörige Verzeichnis mit socket. Deswegen habe ich das mal vorrübergehend deaktiviert.

2.) Wenn ich den gpg-agent im Vordergrund starte läuft zwar der Prozess, aber passphrasen werden nicht gecached:

Quellcode

1
2
3
02:39:29 felix@HAL9000: ~/.gnupg$ gpg-agent --server
OK Pleased to meet you
...


3.) Ich habs mit verschiedenen Optionen versucht, aber immer möchte der gpg-agent sein socket unter ~/.gnupg finden:

Quellcode

1
2
3
4
5
6
7
8
9
02:40:04 felix@HAL9000: ~/.gnupg$ gpg-agent -v
gpg-agent[19169]: can't connect to `/home/felix/.gnupg/S.gpg-agent': Connection refused
gpg-agent: no gpg-agent running in this session
02:40:11 felix@HAL9000: ~/.gnupg$ gpg-agent --use-standard-socket
gpg-agent[19224]: can't connect to `/home/felix/.gnupg/S.gpg-agent': Connection refused
gpg-agent: no gpg-agent running in this session
02:40:24 felix@HAL9000: ~/.gnupg$ gpg-agent --allow-preset-passphrase
gpg-agent[19373]: can't connect to `/home/felix/.gnupg/S.gpg-agent': Connection refused
gpg-agent: no gpg-agent running in this session


Hmmm...

7

24.11.2009, 01:13

Hi

schau mal ob dir diese Doku weiterhilft
http://www.gentoo.org/doc/de/gnupg-user.xml#doc_chap4
(Vorsicht, ist nicht unbedingt alles topaktuell)

MfG

8

25.11.2009, 18:27

Hallo Josef,
ich habe die Schritte im Leitfaden kontrolliert und noch die Datei ~/.xsession mit dem entsprechenden Eintrag angelegt, es bleibt allerdings alles beim alten :(

9

30.11.2009, 09:49

Du startest vermutlich deine Session mit einem xDM, gell? As habe ich übersehen, da ich in die Shell boote und von dort aus X11 starte. Wenn ich das so mache, dann habe ich als allerseten Prozess meine Bash, welche den gpg-agent startet und deswegen auch nur einen einzigen im System laufen.

Bei dir ist das dann wohl anders, weil du nicht direkt in die Bash bootest.

was tut sich bei

Quellcode

1
$ gpg-agent -vvv --debug-level advanced
bzw. "expert" und "guru"?
http://www.dyle.org
IM-Account (Jabber!) sind auf meiner HP ...
There is no place like /home

http://www.gentooforum.de
http://www.gentoofreunde.org

<div>how to annoy a web developer?</span>

10

30.11.2009, 21:44

Ja, ich gehöre zu den display-manager user Weicheiern :)

Also, advanced, expert und guru sagen folgendes:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
21:31:21 felix@HAL9000: ~$ gpg-agent -vvv --debug-level advanced
gpg-agent: gpg-agent running and available
gpg-agent: secmem usage: 0/32768 bytes in 0 blocks
21:31:23 felix@HAL9000: ~$ gpg-agent -vvv --debug-level expert  
gpg-agent: gpg-agent running and available
gpg-agent: secmem usage: 0/32768 bytes in 0 blocks
21:31:37 felix@HAL9000: ~$ gpg-agent -vvv --debug-level guru  
gpg-agent: gpg-agent running and available
gpg-agent: random usage: poolsize=600 mixed=0 polls=0/0 added=0/0
              outmix=0 getlvl1=0/0 getlvl2=0/0
gpg-agent: secmem usage: 0/32768 bytes in 0 blocks


Wenn ich vorher den symlink zum socket lösche:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
21:31:42 felix@HAL9000: ~$ rm .gnupg/S.gpg-agent 
21:32:15 felix@HAL9000: ~$ gpg-agent -vvv --debug-level advanced
gpg-agent[29768]: can't connect to `/home/felix/.gnupg/S.gpg-agent': No such file or directory
gpg-agent: no gpg-agent running in this session
gpg-agent: secmem usage: 0/32768 bytes in 0 blocks
21:32:18 felix@HAL9000: ~$ gpg-agent -vvv --debug-level expert
gpg-agent[29801]: can't connect to `/home/felix/.gnupg/S.gpg-agent': No such file or directory
gpg-agent: no gpg-agent running in this session
gpg-agent: secmem usage: 0/32768 bytes in 0 blocks
21:32:26 felix@HAL9000: ~$ gpg-agent -vvv --debug-level guru
gpg-agent[29814]: can't connect to `/home/felix/.gnupg/S.gpg-agent': No such file or directory
gpg-agent: no gpg-agent running in this session
gpg-agent: random usage: poolsize=600 mixed=0 polls=0/0 added=0/0
              outmix=0 getlvl1=0/0 getlvl2=0/0
gpg-agent: secmem usage: 0/32768 bytes in 0 blocks


?(

P.S.: Du hast mich übrigens auf die Idee gebracht, GDM auf meiner virtuellen Box zu entfernen und Xfce so zu starten. Das ist gar nicht mal so kompliziert wie ich zunächst dachte. Im Netz gibt es jedenfalls ne Menge Hilfe dazu. Und es funktioniert sogar! Hach, ich liebe dieses Forum :D

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »make.conf« (30.11.2009, 22:37)


11

02.12.2009, 08:55

Kannst du diese Angaben machen auch mit

Quellcode

1
$ echo $GPG_AGENT_INFO
und der Versicherung, das die damit gezeigte Datei 1) existiert 2) der mom. User darauf schreiben und lesen kann sowie 3) da wirklich der gpg-agent darauf lauscht (via netstat -nelp)?
http://www.dyle.org
IM-Account (Jabber!) sind auf meiner HP ...
There is no place like /home

http://www.gentooforum.de
http://www.gentoofreunde.org

<div>how to annoy a web developer?</span>

12

22.12.2009, 16:48

Hi Felix, ich mag euch beiden ja eigentlich kaum dazwischenfunken, aber...
Ja, ich gehöre zu den display-manager user Weicheiern :)
Dann schau doch mal ob dein Desktop nicht evtl. selbst schon eine Möglichkeit für den gpg-agent mitbringt.
KDE zb bringt da schon von haus aus was mit
kde-base/kdebase-startkde

Quellcode

1
2
3
4
5
LOG: postinst
...
To enable gpg-agent and/or ssh-agent in KDE sessions,
edit /etc/kde/startup/agent-startup.sh and
/etc/kde/shutdown/agent-shutdown.sh

Gibt es bei deinem verwendeten Desktop evtl. ähnliche möglichkeiten?

MfG