Subsistema Windows para Linux - compartilhar agente ssh?

Subsistema Windows para Linux - compartilhar agente ssh?

Estou executando o Ubuntu 16.04 em um shell do Windows Subsystem for Linux (WSL) no Windows 10. De dentro de um terminal, posso iniciar o ssh-agent e usá-lo muitas vezes durante a vida desse terminal. Posso ver o agente ssh em execução no ps e também no gerenciador de tarefas do Windows 10.

No entanto, se eu iniciar um segundo terminal bash WSL no menu iniciar, ele não terá conhecimento do agente ssh. Estranhamente, se eu iniciar um segundo terminal na linha de comando do Windows, ele funciona. Uma possível solução alternativa seria abrir novas janelas bash a partir da existente, mas também não sei como fazer isso.

Existe alguma solução para isso?

Responder1

Você pode modificar seu .bashrc para encontrar um agente ssh em execução existente.

Eu uso algo baseado noessência

# ssh-agent configuration
if [ -z "$(pgrep ssh-agent)" ]; then
    rm -rf /tmp/ssh-*
    eval $(ssh-agent -s) > /dev/null
else
    export SSH_AGENT_PID=$(pgrep ssh-agent)
    export SSH_AUTH_SOCK=$(find /tmp/ssh-* -name agent.*)
fi

# optional... potentially annoying
#if [ "$(ssh-add -l)" == "The agent has no identities." ]; then
#    ssh-add
#fi

Responder2

Apenas descobri isso devido a outra nova resposta, mas a maioria das respostas aqui sugere alguma forma de ajuste do script de inicialização (por exemplo ~/.bashrc). Em vez de reinventar a roda, sugirokeychain.

Após a instalação (disponível na maioria dos repositórios de distribuição, por exemplo sudo apt install keychain), basta adicionar:

eval $(keychain --eval --agents ssh id_rsa)

... para o seu ~/.bashrc. Isso definirá corretamente suas variáveis SSH_AGENT_PID​​e SSH_AUTH_SOCKpara a sessão atual para apontar para a existente ssh-agentou iniciar uma nova, se necessário. Dessa forma, apenas um compartilhado ssh-agenté usado para todas as sessões WSL/terminais abertas.

Um boato divertido - keychainfoi originalmente escrito por Daniel Robbins, que também fundou o Gentoo Linux.

Responder3

Talvez não: parece que ssh-agentestá sendo executado da maneira usual, onde é o processo pai do seu shell. Essa outra janela tem sua própria hierarquia de processo pai/filho, que não está vinculada à janela que você está usando.

Uma maneira de trabalharcomesse recurso ssh-agenté executado screen(ou tmux) dentro da janela onde você iniciou o agente. Essas janelas screen/tmux também são filhas do ssh-agentprocesso e podem conversar com ele sem problemas.

Responder4

Existe agora. Instale a versão mais recente doOpenSSH para Windows, e então obtenha ossh-agente-wslajudante. Siga as instruções e você obterá facilmente uma maneira prática de compartilhar credenciais entre WSL e Windows! Ele funciona como um encanto!

informação relacionada