This is what I did:
cd ~
touch .bashrc
notepad .bashrc
and the content of my .bashrc is (found on the web somewhere):
SSH_E
The simplest mechanism on Windows is the one from here http://anterence.blogspot.co.uk/2012/01/ssh-agent-in-msysgit.html
Modified to show key names other than 'id_rsa', the .bashrc file looks like this:
#! /bin/bash
eval `ssh-agent -s`
ssh-add ~/.ssh/github_rsa
ssh-add ~/.ssh/otherkey_rsa
You are prompted for the passphrase for each key in turn, but only the first time after a machine start.
Bingo! Something was obviously wrong with the way the ssh-agent is run in that .bashrc. I copied the one from here and it works a treat! Now I only have to enter my passphrase once when git bash starts up, and any subsequent push no longer need it.
Here's the actual content of the script now:
SSH_ENV=$HOME/.ssh/environment
function start_agent {
echo "Initialising new SSH agent..."
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > ${SSH_ENV}
echo succeeded
chmod 600 ${SSH_ENV}
. ${SSH_ENV} > /dev/null
/usr/bin/ssh-add;
}
# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
. ${SSH_ENV} > /dev/null
#ps ${SSH_AGENT_PID} doesn't work under cywgin
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi
Try this, works for me.
SSH_ENV=$HOME/.ssh/environment
function start_agent {
echo "Initialising new SSH agent..."
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > ${SSH_ENV}
echo succeeded
chmod 600 ${SSH_ENV}
. ${SSH_ENV} > /dev/null
/usr/bin/ssh-add;
}
# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
. ${SSH_ENV} > /dev/null
#ps ${SSH_AGENT_PID} doesn't work under cywgin
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi