ssh-agent variables available to any user process
Karl M
karlm30@hotmail.com
Wed Aug 30 13:40:00 GMT 2006
Hi All...
>From: Jörg Schaible Reply-To: To: "[ML] CygWin " Subject: RE: ssh-agent
>variables available to any user process
>Date: Wed, 30 Aug 2006 08:02:46 +0200
>
>Lapo Luchini wrote on Wednesday, August 30, 2006 12:42 AM:
>
> > Under FreeBSD, I launch ssh-agent in my .xsession script and its
> > environment is automatically inherited by every shell I then
> > open in my
> > X11 session.
> > No such luck with Windows, but I found a way to propagate a
> > environment variable to any (future) user process after the user is
> > already logged.
> > (or, at the very least...) Works for me.
> >
> > Variables will be then available on any shell and program opened after
> > the attached script is executed.
> > (put it in "Startup" menu in order to execute it at logon time)
>
>I use a similar approach for years utilizing keychain. In my ~/.profile I
>have following lines:
I do domething similar, but skip using keychain because it adds so much time
to launching a bash shell window. I just use ssh-agent directly. Once you do
all this work, keychain isn't doing much for you.
>
>====== %< =======
>if test -z "`pidof ssh-agent`"; then
> keychain ~/.ssh/id_dsa
> . ~/.keychain/`hostname`-sh
> # Create batch files to be called from running shells
> cat ~/.keychain/`hostname`-sh | sed -e "s/;.*$//g" | u2d >
>~/.keychain/`hostname`-command.bat
> # Set environment directly
> regtool -s set /machine/SYSTEM/CurrentControlSet/Control/Session\
>Manager/Environment/SSH_AUTH_SOCK $SSH_AUTH_SOCK
> regtool -s set /machine/SYSTEM/CurrentControlSet/Control/Session\
>Manager/Environment/SSH_AGENT_PID $SSH_AGENT_PID
> # Broadcast of WM_SETTINGCHANGE
> update-env
>else
> . ~/.keychain/`hostname`-sh
>fi
>====== %< =======
>
>And update-env.c is:
>
>====== %< =======
>#include <windows.h>
>int main() {
> SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0,
>(LPARAM)"Environment");
>}
>====== %< =======
>
>build with Makefile:
>
>====== %< =======
>all: update-env.exe
>
>%.exe: %.c
> gcc -mno-cygwin $^ -o $*
> strip $@
>====== %< =======
I use
ssh-add -l >/dev/null 2>&1
if [ $? -eq 1 ]; then
ssh-add
fi
in my profile and I launch ssh-agent from a service(one service for each
user), so it survives logout on windows. The service and service installer
bash scripts are attached.
I've considered supporting this as a package, but have not seen much
interest.
>
>I never found a way to broadcast the WM_SETTINGCHANGE directly form the
>script without the little helper app.
Neither did I. My helper application sendchenv.exe, but the same as
update-env.exe. My source is also attached.
HTH,
...Karl
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: secret-agent-service-install
URL: <http://cygwin.com/pipermail/cygwin/attachments/20060830/8f55a1dc/attachment.ksh>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: secret-agent-service
URL: <http://cygwin.com/pipermail/cygwin/attachments/20060830/8f55a1dc/attachment-0001.ksh>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: sendchenv.c
URL: <http://cygwin.com/pipermail/cygwin/attachments/20060830/8f55a1dc/attachment.c>
-------------- next part --------------
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
More information about the Cygwin
mailing list