Subsistema Windows para linux - compartilhar ssh-agent?

6

Estou executando o Ubuntu 16.04 dentro de um shell do Windows Subsystem para Linux (WSL) no Windows 10. De dentro de um terminal, posso iniciar o ssh-agent e usá-lo várias vezes ao longo da vida desse terminal. Eu posso ver o agente ssh rodando a partir do ps, e também do gerenciador de tarefas do Windows 10.

No entanto, se eu iniciar um segundo terminal bash do WSL a partir do menu Iniciar, ele não está ciente do agente ssh. Estranhamente, se eu iniciar um segundo terminal a partir da linha de comando do windows, ele funciona. Uma solução possível seria abrir novas janelas do bash existentes, mas também não sei como fazer isso.

Existe alguma solução para isso?

    
por HDave 05.11.2016 / 01:30

3 respostas

3

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 pai / filho de processo que não se liga à janela que você está usando.

Uma maneira de trabalhar com esse recurso de ssh-agent é executar screen (ou tmux ) na janela em que você iniciou o agente. Essas janelas de tela / tmux também são filhos do processo ssh-agent e podem conversar sem problemas.

    
por 05.11.2016 / 01:45
2

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

Eu uso algo com base na essê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
    
por 15.07.2017 / 04:28
1

Eu prefiro este script que usa ssh-add para descobrir se suas chaves já foram adicionadas

ssh-add -l &>/dev/null
if [ "$?" == 2 ]; then
  test -r ~/.ssh-agent && \
    eval "$(<~/.ssh-agent)" >/dev/null

  ssh-add -l &>/dev/null
  if [ "$?" == 2 ]; then
    (umask 066; ssh-agent > ~/.ssh-agent)
    eval "$(<~/.ssh-agent)" >/dev/null
    ssh-add
  fi
fi

Você pode ler mais sobre isso em: link

    
por 31.07.2017 / 09:46