[Edited: 10/6/08 Remove temporary files before starting a new agent]
Another little annoyance gone: all Cygwin processes now share a single ssh-agent instance, which is started up automatically as required. I picked this tip up from a now-forgotten blog. the only change required to that recipe being to re-order the redirections for the ssh-agent command. Since it took me a while to find (low Google-fu today?) I take the liberty of repeating it here so I don't forget it.
In your ~/.bashrc file add the following:
export SSH_AUTH_SOCK=/tmp/.ssh-socket
ssh-add -l >/dev/null 2>&1
if [ $? = 2 ]; then
# Exit status 2 means couldn't connect to ssh-agent; start one now
rm -rf /tmp/.ssh-*
ssh-agent -a $SSH_AUTH_SOCK >/tmp/.ssh-script
. /tmp/.ssh-script
echo $SSH_AGENT_PID >/tmp/.ssh-agent-pid
fi
function kill-agent {
pid=`cat /tmp/.ssh-agent-pid`
kill $pid
}
You can use Start | My Computer | Properties | Advanced | Environment Variables to add an environment variable called SSH_AUTH_SOCK whose value is /tmp/.ssh-socket to make the agent available to other Cygwin-aware processes you run under Windows.
That's better!
For some reason a number of posts were stuck in the blog as drafts. This one is from October last year.
Nice post. Very useful.
ReplyDeleteI've been looking for something like this myself and this works like a charm, thanks! Though I didn't need to set a Windows environment variable to have the agent available to subsequent rxvts.
ReplyDeleteGlad you found it useful. I have since given up on rxvt, having found mintty to be a much more satisfactory alternative.
ReplyDelete