Solução que funciona para mim no Windows WSL (sem alterar o modo de arquivo):
sudo ssh -i keyfile <user>@ip
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?
Solução que funciona para mim no Windows WSL (sem alterar o modo de arquivo):
sudo ssh -i keyfile <user>@ip
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.
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.
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
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).