summaryrefslogtreecommitdiff
path: root/_posts
diff options
context:
space:
mode:
authorMoritz Beber <m.beber@jacobs-university.de>2010-08-11 16:12:34 +0200
committerMoritz Beber <m.beber@jacobs-university.de>2010-08-11 16:12:34 +0200
commit61ebb4de32d390c7ed6fdc8a0823ec6024795fc9 (patch)
tree899830e92c7b5732c93d98f6f441f6d431f2b8ac /_posts
parenteedf0d0871a158c4254515c09ec2eca7b43a32dc (diff)
Removed inconsistencies.
The automatic launching now first checks for an already running agent before it launches its own one. Launching is now consistent across windows due to the use of SSH_ENV again. The return code of ssh-add is now specifically checked for returncode 2 which indicates that the socket is broken.
Diffstat (limited to '_posts')
-rw-r--r--_posts/2009-09-03-working-with-key-passphrases.textile32
1 files changed, 25 insertions, 7 deletions
diff --git a/_posts/2009-09-03-working-with-key-passphrases.textile b/_posts/2009-09-03-working-with-key-passphrases.textile
index 604221e..12f74b6 100644
--- a/_posts/2009-09-03-working-with-key-passphrases.textile
+++ b/_posts/2009-09-03-working-with-key-passphrases.textile
@@ -36,31 +36,49 @@ h2. Auto-launching ssh-agent on msysgit
You can run @ssh-agent@ automatically when you open bash by adding the following to your @~/.profile@ or @~/.bashrc@ file:
<pre>
-# automatically start the ssh-agent
+SSH_ENV="$HOME/.ssh/environment"
+
+# start the ssh-agent
function start_agent {
echo "Initializing new SSH agent..."
# spawn ssh-agent
- eval `ssh-agent` > /dev/null
+ ssh-agent | sed 's/^echo/#echo/' > $SSH_ENV
echo succeeded
+ chmod 600 $SSH_ENV
+ . $SSH_ENV > /dev/null
ssh-add
}
# check for running ssh-agent with proper $SSH_AGENT_PID
ps -ef | grep $SSH_AGENT_PID | grep -v grep > /dev/null
if [ $? -eq 0 ]; then
-# test whether standard identities have been added to the agent already
+ # test whether standard identities have been added to the agent already
ssh-add -l | grep "The agent has no identities" > /dev/null
if [ $? -eq 0 ]; then
ssh-add
# $SSH_AUTH_SOCK broken so we start a new proper agent
- if [ $? -ne 0 ];then
+ if [ $? -eq 2 ];then
start_agent
fi
fi
-# if $SSH_AGENT_PID is not properly set, the socket is probably neither better
-# to start a new agent
+# if $SSH_AGENT_PID is not properly set, we might be able to load one from
+# $SSH_ENV
else
- start_agent
+ . $SSH_ENV > /dev/null
+ ps -ef | grep $SSH_AGENT_PID | grep -v grep > /dev/null
+ if [ $? -eq 0 ]; then
+ # test whether standard identities have been added to the agent already
+ ssh-add -l | grep "The agent has no identities" > /dev/null
+ if [ $? -eq 0 ]; then
+ ssh-add
+ # $SSH_AUTH_SOCK broken so we start a new proper agent
+ if [ $? -eq 2 ];then
+ start_agent
+ fi
+ fi
+ else
+ start_agent
+ fi
fi
</pre>