Eu vejo que esta pergunta não foi respondida há mais de um ano, mas eis como resolvi o problema.
O que você quer fazer é certificar-se de que o usuário que executa o jenkins
- verifica se o ssh-agent está em execução (se não, inicie-o)
- verifica se uma chave está carregada (se não, carregue uma)
Coloque isso em seu ~ / .bash_profile para o usuário que executa o jenkins do usuário que precisa encaminhar o agente, para garantir que ele seja executado com cada novo shell:
SSH_ENV="$HOME/.ssh/environment"
function start_agent {
echo "Initializing new SSH agent..."
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
echo succeeded
chmod 600 "${SSH_ENV}"
. "${SSH_ENV}" > /dev/null
ssh-add .ssh/id_rsa
cat .ssh/id_rsa.pub
}
#Source SSH Settings
if [ -f "${SSH_ENV}" ]
then
. "${SSH_ENV}" > /dev/null
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent > /dev/null || {
start_agent;
}
else
start_agent;
fi
if [ 'ssh-add -l | grep "The agent has no identities." | wc -l' == 1 ]
then
ssh-add .ssh/id_rsa
cat .ssh/id_rsa.pub
fi
Cerca de 50% do código aqui eu peguei de outro lugar, mas não consigo lembrar onde dar crédito. Isso deve ser razoavelmente portátil, e seu uso não precisa ser limitado a jenkins, ele deve funcionar em qualquer situação de encaminhamento de ssh-agent.