Como proteger a chave privada SSH no Windows 10

Como proteger a chave privada SSH no Windows 10

Estou usando o novo cliente ssh para windows 10 e ao tentar conectar com uma chave privada estou recebendo este erro:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for 'MyPair.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 "MyPair.pem": bad permissions [email protected]:
Permission denied (publickey).

Eu sei que se eu estivesse no Linux precisaria executar chmod 600para definir as permissões dos arquivos, mas o que você usa no Windows 10?

Responder1

As chaves só devem ser acessíveis ao usuário ao qual se destinam e nenhuma outra conta, serviço ou grupo.

  • GUI:
    [Arquivo]PropriedadesSegurançaAvançado
    1. Proprietário:Mudar →Selecione um diretor→ Digite o usuário da chave → OK
    2. Entradas de permissão:Remova todos, exceto o usuário da chave
    3. Defina o usuário da chave comoControlo totalse ainda não estiver definido
      1. Selecione usuário → Modificar → Controle total → OK
        OU
      2. Adicionar →Selecione um diretor→ Digite o usuário da chave → OK
    4. OK → OK

  • Cmd:
    ::# Set Key File Variable:
        Set Key="%UserProfile%\.ssh\id_rsa"
    
    ::# Remove Inheritance:
        Icacls %Key% /c /t /Inheritance:d
    
    ::# Set Ownership to Owner:
        Icacls %Key% /c /t /Grant %UserName%:F
    
    ::# Remove All Users, except for Owner:
        Icacls %Key%  /c /t /Remove Administrator BUILTIN\Administrators BUILTIN Everyone System Users
    
    ::# Verify:
        Icacls %Key%
    
    ::# Remove Variable:
        set "Key="
    
    

  • PowerShell:
    # Set Key File Variable:
      New-Variable -Name Key -Value "$env:UserProfile\.ssh\id_rsa"
    
    # Remove Inheritance:
      Icacls $Key /c /t /Inheritance:d
    
    # Set Ownership to Owner:
      Icacls $Key /c /t /Grant $env:UserName:F
    
    # Remove All Users, except for Owner:
      Icacls $Key  /c /t /Remove Administrator BUILTIN\Administrators BUILTIN Everyone System Users
    
    # Verify:
      Icacls $Key
    
    # Remove Variable:
      Remove-Variable -Name Key
    
    

  • WSL/Cygwin:
    # Set Variables:
      # Key File:
        key="/path/to/key"
    
      # User:
        user="$(echo $USER)"
    
    # Set Ownership to Owner: (assumes user's name is also user's group name)
      chown $user:$user $key
    
    # Set Access Rights
      chmod 0600 $key
    
    # Verify
      ls -l $key
    
    

Responder2

Usando a GUI do Windows 10, aqui estão alguns detalhes adicionais:

  1. clique com o botão direito no arquivo pem, propriedades, segurança.
  2. definir proprietário como o usuário da chave (ou seja, você)
  3. entradas de permissão, remova todos os usuários, grupos, serviços, exceto o usuário da chave
  4. defina o usuário da chave para "controle total". Veja como eu fiz isso:
  5. desabilitar herança. se você vir um pop-up, opte por converter para permissões explícitas neste arquivo.
  6. Adicione, selecione um principal, o tipo de objeto é Usuário, o nome do objeto é o nome de usuário do proprietário da chave (por exemplo, se seu diretório inicial for a pasta c:\Users\ben, digite ben aqui). OK.
  7. Dê a esse usuário controle total
  8. excluir todos os outros (usuários autenticados, sistema, etc.)
  9. OK

É importante definir o proprietário como o usuário da chave antes de desabilitar a herança.

Responder3

Para ganhar tempo, muito mais fácil que as outras soluções: basta mover o arquivo para um “local seguro” do seu disco, como a %userprofile%/.sshpasta.

NOTA: Algumas pessoas disseram que funciona em qualquer lugar na unidade C: ou na pasta de downloads do usuário, mas não testei isso.

informação relacionada