
Eu gostaria ssh-agent
de começar quando iniciar o Cygwin, já que uso o passthrough ssh com frequência.
Eu tentei adicionar:
eval `ssh-agent.exe`
para o meu .bashrc
, mas sempre que uso Alt-F2
para abrir uma nova janela de terminal, o .bashrc
é executado e, portanto, novos ssh-agent
s são criados, o que é indesejável e atrapalha a passagem.
Tentei então mover o comando eval para .bash_profile
, mas isso também resultou no mesmo problema - acho que cada nova janela de terminal é considerada um novo shell de login.
Uma terceira opção é usar cygrunsrv
, mas acabei de descobrir e não tenho certeza de como usá-lo para esse propósito específico e, talvez mais importante, como transmitir as SSH_AUTH_SOCK
informações SSH_AGENT_PID
de onde o serviço é criado para cada novo shell criado .
Quaisquer sugestões sobre a melhor maneira de alcançar este resultado - onde um único agente ssh é executado e aguarda, e suas informações estão imediatamente disponíveis para serem usadas em qualquer shell recém-aberto - são bem-vindas.
Responder1
Você pode colocá-lo no seu .bashrc
, mas antes de iniciá-lo novamente você deve verificar se ele já está rodando. 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 dissoaquino site da U&L.
Eu faço algo assim, mas faço com que o environ
arquivo inclua o nome do host atual, já que meu diretório inicial está em um compartilhamento de rede e quero executar o agente em hosts diferentes simultaneamente.
E para esclarecer explicitamente como isso responde à sua pergunta sobre como fazer com que a SSH_AUTH_SOCK
variável seja passada entre processos, você armazena a saída ssh-agent
em um arquivo e a origina novamente em cada shell