Eu tenho o Windows 10 com o Git instalado. Este Git usa meu C:/Users/MyName
diretório como diretório HOME e o /.ssh/
diretório interno, apropriadamente para obter minhas chaves SSH privadas.
Acabei de ativar e configurar o "Bash no Ubuntu no Windows" (que bocado!) E instalei o Git também. Gostaria que os dois Gits usassem o mesmo conjunto de chaves, para que não importasse em que ambiente eu trabalhasse nesta máquina, meus commits sempre virão de mim.
O problema é que o diretório HOME no bash é diferente ( /home/MyName
) e, portanto, ele não vê as chaves localizadas no agora distante ../../mnt/c/Users/MyName/.ssh
. Eu pensei que seria um vencedor mudando a variável de ambiente HOME usando
export HOME=/c/mnt/Users/MyName
Isso mudou o diretório HOME com êxito, mas o bash git ainda não vê as chaves contidas no ./.ssh
diretório.
Não tenho certeza se isso é A) porque o bash git espera chaves em um formato de arquivo diferente? (os atuais são id_rsa
e id_rsa.pub
) B) o bash git está ignorando a variável HOME alterada? Ou talvez ambos.
Também não tenho certeza C) se alterar arbitrariamente a variável HOME como essa é uma boa idéia, em geral, em outros programas que possam fazer referência a ela?
.ssh
já existe em/home/MyName
... pode-se ligar um arquivo? tal que eu farialn -s /mnt/c/Users/MyName/.ssh/id_rsa /.ssh/id_rsa
? (novo para criar um link simbólico também!).ssh
diretório inteiro .Respostas:
Então, como Telastyn comentou, adicionei links simbólicos nas WSLs
~/.ssh/
ao id_rsa e id_rsa.pub usando:Usando a mesma técnica para vincular o diretório de link simbólico, conforme sugerido pelo triplo, eu tive problemas até perceber que as barras finais que eu usei no
ln
comando (deixadas de usar a tecla tab para ter o bash preenchendo o nome do diretório) eram um problema. Assim, em vez de fazer o acima, seria melhor:O arquivo known_hosts difere um pouco entre o meu uso dele (git no powershell usando o ssh-agent) no Windows e o uso SSH dele na WSL, em que o nome do host e o IP não são divididos na versão do Windows. De acordo com a página de manual do ssh-config, há um sinalizador disponível para desativar esse hash, o que eu entendi como o SSH entenderia o arquivo sem o hash que funcionou até agora.
Esse último método significa que os detalhes usados para SSH usados entre os dois ambientes diferentes são exatamente os mesmos.
Obrigado a Matěj Kříž por apontar um personagem desaparecido pequeno, mas vital!
fonte
> ln -s /mnt/c/Users/MyName/.ssh/id_rsa ~/.ssh/id_rsa
adicionado "~". Não?private keys
frombash on windows
if oness link
entre os diretórios. Fazer isso fará comssh agent
que reclamar de permissão incorreta em arquivos de chave privada. Como os arquivos montados a partir da janela, sua permissão não pode ser alterada.Com base na nova compilação, as permissões "Insider Build 17063" para arquivos funcionam de maneira diferente agora. Em suma, você precisa fazer:
Isso fará com que as permissões para sua pasta ssh funcionem conforme necessário. Então proceda como OP sugere em sua resposta.
Links relevantes:
https://github.com/Microsoft/WSL/issues/3181 https://blogs.msdn.microsoft.com/commandline/2018/01/12/chmod-chown-wsl-improvements/
EDITAR
Estou de volta a esta pergunta porque descobri que essa é apenas uma solução temporária (sim, sou burra). Cada vez que você reinicia (efetua logout) sua WSL, é necessário converter esses comandos novamente.
Portanto, a solução que funciona para mim agora é editar (criar) o arquivo de configuração
/etc/wsl.conf
no meu wsl ubuntu e colocar dentro do seguinte, depois reiniciar para fazer montagens novamente:Por que adiciono metadados:
Por que definir uid e gid:
Links relevantes:
https://docs.microsoft.com/en-us/windows/wsl/wsl-config https://blogs.msdn.microsoft.com/commandline/2018/02/07/automatically-configuring-wsl/ https: / /blogs.msdn.microsoft.com/commandline/2018/01/12/chmod-chown-wsl-improvements/
fonte