O comando
eval $(ssh-agent)
inicia o processo do agente SSH (equivalente ao Pageant) e cria tipicamente duas variáveis de ambiente: SSH_AUTH_SOCK e SSH_AGENT_PID (pelo menos no Linux, não sei se o Windows git-bash faz alguma diferença aqui; provavelmente não).
Se a variável SSH_AUTH_SOCK estiver configurada e apontar para um soquete de agente de autenticação válido, qualquer processo que possa ler a variável poderá utilizá-la. Então você só precisa de uma maneira de ter o valor dessa variável propagada de uma sessão git-bash para outra. A variável SSH_AGENT_PID é apenas uma conveniência, para permitir que o agente seja facilmente eliminado se / quando necessário.
Se você puder armazenar essas variáveis de ambiente (ou mesmo apenas SSH_AUTH_SOCK) em um arquivo, para que as janelas subsequentes do git-bash possam lê-lo, você pode fazer o script desta maneira:
Sempre que um novo git-bash é iniciado (ou seja, com o script .bashrc
ou seu equivalente git-bash)
- verifique a existência do arquivo de variável de ambiente do agente SSH
- se o arquivo existir:
- leia
- se o soquete do agente (e opcionalmente o processo) listado no arquivo ainda existir, use as variáveis como estão em sua sessão atual
- else (ou seja, se o arquivo não estava presente ou suas informações estavam obsoletas):
- executar
eval $(ssh-agent)
- crie um novo arquivo de variável de ambiente do agente SSH
- executar
- pronto!
Além disso, talvez seja necessário inserir o URL do SSH git em formato completo, ou seja, em vez de apenas [email protected]/project.git
, você deve digitá-lo assim:
ssh://[email protected]/project.git
Tecnicamente, o formulário sem o prefixo ssh://
é apenas um atalho que é mais conveniente para digitar na linha de comando.