Qual é a melhor maneira de iniciar o ssh-agent com o Cygwin?

0

Eu gostaria ssh-agentde começar quando inicio o Cygwin, já que uso o ssh passthrough frequentemente.

Eu tentei adicionar:

eval `ssh-agent.exe`

para o meu .bashrc, mas sempre que eu uso Alt-F2para abrir uma nova janela de terminal, o .bashrcé executado e, portanto, ssh-agentsão criados novos s, o que é indesejável e interfere com a passagem.

Tentei mover o comando eval para .bash_profile, mas isso também resulta no mesmo problema - acho que toda nova janela de terminal é considerada um novo shell de login.

Uma terceira opção é usar cygrunsrv, mas eu só descobri sobre isso e não sou clara sobre como usá-lo para este fim específico, e talvez mais importante, como passar no SSH_AUTH_SOCKe SSH_AGENT_PIDinformações de onde o serviço é criada para cada novo shell criado .

Quaisquer sugestões sobre a melhor maneira de alcançar esse resultado - onde um único agente ssh é executado e aguardando, e suas informações estão imediatamente disponíveis para serem usadas em qualquer shell recém-aberto - são bem-vindas.

pôr do sol
fonte

Respostas:

1

Você pode colocá-lo no seu .bashrc, mas antes de iniciá-lo novamente, verifique se ele já está em execução. Por exemplo, você pode fazer

if [ -z "$SSH_AUTH_SOCK" ]; then
    (umask 077; ssh-agent > "$HOME/.ssh/environment")
    ssh-add
fi

como parte do processo.

Also, if the agent is not running, you could first test if that environment file exists and source it like

environ="$HOME/.ssh/environment"
if [ -f "$environ" ]; then
    . "$environ" >/dev/null
fi

if [ -z "$SSH_AUTH_SOCK" ] || ! ps -p "$SSH_AGENT_PID" | grep -q ssh-agent; then
    (umask 077; ssh-agent > "$environ")
    ssh-add
fi

Há uma resposta longa detalhando muito disso aqui no site da U&L.

Eu faço algo assim, mas o environarquivo inclui o nome do host atual, pois meu diretório pessoal está em um compartilhamento de rede e desejo executar o agente em diferentes hosts simultaneamente.

E, explicitamente, como isso responde à sua pergunta sobre como obter a SSH_AUTH_SOCKvariável passada entre processos, você armazena a saída de ssh-agentum arquivo e a origina novamente em cada shell

Eric Renouf
fonte
Obrigado pela resposta e pelo link. Depois de analisar as várias opções, fui com a keychainsolução, que acaba sendo um pequeno programa incrível.
Sundar