Gordon Messmer wrote:> On 03/28/2013 07:00 AM, m.roth at 5-cent.us wrote:
>> Most of my users are on kde, as am I (I really don't like gnome).
I've
got one on gnome, though, CentOS 6.4, and I have a problem: I have to
start>> an agent running ->on login<-, so that the same one is in the
environment>> of every term window he opens.
> That would be the normal configuration.
>> In kde, no problem, I modify /etc/X11/xinit/xinitrc-common so that code
>> in there calls our (newer) ssh-agent instead of the stock one.
>> (And, of course, it's killed on logout, and there's only one
running,
>> not one every time that never go away unless killed manually.)
> You're already making things more complicated than they should be. The
ssh agent is supposed to be the parent process of your login session.
That is, your login session should be:> ssh-agent startkde
> or:
> ssh-agent gnome-session
Well, no. If you look at the stock /etc/X11/xinit/xinitrc-common. at the
bottom of the file, that's where it sets this stuff. As I said, we *have*
to use the compiled from more recent versions of ssh, because the current
stock version doesn't support US gov't PIV cards for authentication. And
doing this, I only get one agent, and it gets killed automagically when I
log out, as expected.
> With GDM, you'd modify the session file in /usr/share/xsessions.
You'd
a) /usr/share? Why are system-wide configuration files NOT IN /etc? b)
UTF-8? What freakin' morons decided it shouldn't be plain ascii, like
everything else? #$%^&*$%^&*($%^&*($%^&*(%^&*()_+
No matter what I open it in, it keeps showing up with garbage chars.
So I look at /etc/gdm, as I said, and I see it sourcing
/etc/X11/xinit/xinitrc-common, where I've got it set to reference our
agent. Then I go further down, and see
<snip>***************
case "$1" in
failsafe)
exec -l $SHELL -c "xterm -geometry 80x24-0-0"
;;
gnome|gnome-session)
# lack of SSH_AGENT is intentional, see #441123. though # the
whole thing should really happen in xinitrc.d anyway. exec -l
$SHELL -c gnome-session
exec /bin/sh -c "exec -l $SHELL -c
\"gnome-session\""
;;
kde|kde1|kde2)
exec $CK_XINIT_SESSION $SSH_AGENT /bin/sh -c "exec -l $SHELL
-c \"startkde\""
<snip>***************
Pause for some googling, ah, here's my answer that's less ugly, from
<https://ask.fedoraproject.org/question/10225/is-it-possible-to-replace-gnome-keyring-daemon-with-ssh-agent/>,
which is to create /etc/X11/xinit/Xclients.d/Xclients.gnome-session.sh,
whose contents are
#!/bin/sh
exec -l $SHELL -c "$SSH_AGENT gnome-session"
> prefix the "Exec" line with "ssh-agent ", and be done.
As those files
would be
<snip>
> Xclients, which runs your session. You shouldn't need to change
> anything at all, unless your newer ssh-agent is at a different path.
> So, in that case, the only thing you should need to change is to
> run gnome-session-properties, and uncheck "SSH Key Agent".
First, of course it's in a different path. Second, no, I do *not* want to
run a gnome thing - I need to a) do this from a command line, and b) fix
it so it can be built that way, or updated. This isn't my machine, I've
got dozens of users, and need to administer this remotely, without having
to make them stop what they're doing so I can screw with this.
Ok, I followed the guy's instructions, but a) I'm afraid to let the
keyring not run, and b) I get the one agent running... but
gnome-keyring-agent runs *after* it, and so overwrites the environment
variables, which means this is the final trick I need to resolve. As a
first question on that, in that created file,
/etc/X11/xinit/Xclients.d/Xclients.gnome-session.sh, I've got the one
line; however, in /etc/gdn/Xession (really /etc/X11/Xsession), to start
gnome, it has, as you can see above, *two* execs. Any idea why, and any
idea where I can start the agent so that the environment variables are
*not* overwritten by gnome-keyring-agent.
mark