Ubuntu no Windows 10 - SSH “Permissões xxxx para chave privada são muito abertas

4

Eu tenho o arquivo .pem localizado no disco local C "c / private-key.pem" E eu tenho um link para ele no subsistema Ubuntu "~ / .ssh / private-key.pem - > /mnt/c/private-key.pem"

E quando eu estou tentando shh alguma máquina remota do subsistema Ubuntu, eu tenho:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for '/home/artur/.ssh/private-key.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/home/artur/.ssh/private-key.pem": bad permissions
Permission denied (publickey).

Foi iniciado após a atualização de 1803 para o Windows.

Eu estava tentando usar o chmod 400 para a chave na unidade C e na pasta ./ssh no subsistema. E estava tentando definir o proprietário apenas para mim e remover todos os outros usuários do painel de segurança no Windows para esta chave de arquivo. Mas eu tenho "Permissions XXXX for '/home/artur/.ssh/private-key.pem' are too open" or "Permission denied" o tempo todo.

Algum corpo pode me ajudar e explicar como as permissões das chaves devem ser configuradas no subsistema Windows e Ubuntu?

    
por Artur Cherniak 09.05.2018 / 13:20

4 respostas

4

Solução que funciona para mim no Windows WSL (sem alterar o modo de arquivo):

sudo ssh -i keyfile <user>@ip
    
por 24.05.2018 / 09:03
2

Estou lendo nas entrelinhas, e supondo que você esteja usando um subsistema Linux no Windows 10. Quando você vinculou o arquivo do Windows a partir de C: \ no sistema de arquivos Linux em $ HOME / .ssh, as permissões do o arquivo real ainda está sob controle do Windows, e as permissões mostradas na janela do Linux representam apenas as permissões do Windows; você não pode alterar as permissões nos arquivos do Windows em / mnt / c do Linux. Este FAQ da Microsoft fala sobre como os arquivos são tratados nos dois sistemas de arquivos sobrepostos.

O arquivo que você precisa para alterar a permissão é o arquivo que o link simbólico está apontando, então isso significa que o arquivo em / mnt / c

Não parece ser possível conceder acesso somente de usuário a um arquivo do Windows. Mesmo que você desative a herança de permissões em um arquivo e forneça apenas a permissão de leitura de seu próprio usuário, as permissões do Linux ainda serão mostradas como -r - r - r--, de modo que não será utilizável para .ssh

A única opção parece ser copiar o arquivo do Windows para o Linux, nesse ponto você pode usar chmod e chown nele.

    
por 14.05.2018 / 21:11
2

Copie a chave SSH para o diretório WSL ~/.ssh , já que uma chave SSH com qualquer outra coisa que não seja 600/400 compromete a chave.

  • Quando a chave for copiada, certifique-se de que seus EOLs foram alterados para LF.

    • Há várias maneiras de fazer isso, do editor de texto Atom às soluções da CLI, como dos2unix , unix2dos , etc.
  • Veja a resposta abaixo do @ simpleuser para entender por que as permissões não podem ser alteradas via Windows, o que exige a cópia do chave para o diretório ~/.ssh do WSL

por 26.07.2018 / 18:36
-2

Para expandir a resposta acima, pois ela funciona perfeitamente para mim.

Estou usando o Linux Windows Shell no Windows 10 Pro.

A atualização de 1803 quebrou o SSH no shell, pois não há equivalente ao chmod 600 dentro do Windows.

mas você pode deixar seu pem inalterado com permissão de arquivo 777 e executar

sudo ssh -i  my777Keyfile.pem  [email protected] 

e agora você vai entrar em linha reta. (Não sei por que embora).

    
por 18.06.2018 / 14:46