Quando você executar ssh-agent
, deverá salvar as variáveis de ambiente SSH_AUTH_SOCK
e SSH_AGENT_PID
em um arquivo e usá-las para ver se o agente já está em execução.
Você precisa executar o cygwin uma vez para iniciar o agente, mas depois disso ele não precisa estar em execução. Isso provavelmente poderia ser configurado como um serviço também.
Para executar o ssh-agent.exe em segundo plano, adicionei o seguinte a .bashrc
#
# Store env variables
run_ssh_agent="${HOME}/.ssh/agent-for-${HOSTNAME}.pid"
#
# Include env variables if they exist
[ -f "$run_ssh_agent" ] && . "$run_ssh_agent" >/dev/null 2>&1
#
# Test if agent is running
if kill -0 $SSH_AGENT_PID > /dev/null 2>&1; then
#
# Agent is running
echo Agent pid $SSH_AGENT_PID
else
#
# Agent is not running, launch it and store env variables
ssh-agent -s > "$run_ssh_agent"
. "$run_ssh_agent"
#
# Add private keys
ssh-add
fi
#
# List loaded identities
ssh-add -l
Isso não atinge o que você está procurando (executando o ssh-agent sem cygwin), mas funciona perfeitamente para armazenar chaves na memória.