managing ssh key passphrases using ssh-agent

I though I lost this little snippet from the interwebs, good thing github kept a copy.

Add to ~/.bashrc.

 SSH_ENV="$HOME/.ssh/environment"

# start the ssh-agent
 function start_agent {
 echo "Initializing new SSH agent..."
 # spawn ssh-agent
 ssh-agent | sed 's/^echo/#echo/' > "$SSH_ENV"
 echo succeeded
 chmod 600 "$SSH_ENV"
 . "$SSH_ENV" > /dev/null
 ssh-add
 }

# test for identities
 function test_identities {
 # 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
 }

# check for running ssh-agent with proper $SSH_AGENT_PID
 if [ -n "$SSH_AGENT_PID" ]; then
 ps -ef | grep "$SSH_AGENT_PID" | grep ssh-agent > /dev/null
 if [ $? -eq 0 ]; then
 test_identities
 fi
 # if $SSH_AGENT_PID is not properly set, we might be able to load one from
 # $SSH_ENV
 else
 if [ -f "$SSH_ENV" ]; then
 . "$SSH_ENV" > /dev/null
 fi
 ps -ef | grep "$SSH_AGENT_PID" | grep -v grep | grep ssh-agent > /dev/null
 if [ $? -eq 0 ]; then
 test_identities
 else
 start_agent
 fi
 fi
 

[1] http://ufz.github.com/help/ssh-key-passphrases/
[2] http://www.cygwin.com/ml/cygwin/2001-06/msg00537.html

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s