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

0

Eu gostaria que o ssh-agent fosse iniciado quando eu iniciei o Cygwin, já que eu uso ssh passthrough frequentemente.

Eu tentei adicionar:

eval 'ssh-agent.exe'

para meu .bashrc , mas sempre que eu usar Alt-F2 para abrir uma nova janela de terminal, o .bashrc será executado e, portanto, novos ssh-agent s serão criados, o que é indesejável e atrapalha o repasse.

Em seguida, tentei mover o comando eval para .bash_profile , mas isso também resulta no mesmo problema - imagino que cada nova janela de terminal seja considerada um novo shell de login.

Uma terceira opção é usar cygrunsrv , mas acabei de descobrir sobre isso e não tenho clareza sobre como usá-lo para essa finalidade específica e, talvez mais importante, como transmitir os SSH_AUTH_SOCK e SSH_AGENT_PID informações de onde o serviço é criado para cada novo shell criado.

Qualquer sugestão sobre a melhor maneira de alcançar este 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 - é bem-vinda.

    
por sundar 19.09.2016 / 08:15

1 resposta

1

Você pode colocá-lo no seu .bashrc , mas antes de iniciá-lo novamente, você deve verificar se ele já está sendo executado. 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 longa resposta detalhando muito deste aqui no site da U & L.

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

E para explicitar explicitamente como isso responde à sua pergunta sobre como obter a variável SSH_AUTH_SOCK passada entre os processos, você armazena a saída de ssh-agent em um arquivo e a obtém novamente em cada shell

    
por 19.09.2016 / 14:30