
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_SOCK
para a sessão atual para apontar para a existente ssh-agent
ou 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 - keychain
foi originalmente escrito por Daniel Robbins, que também fundou o Gentoo Linux.
Responder3
Talvez não: parece que ssh-agent
está 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-agent
processo 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!