Cómo proteger la clave privada SSH en Windows 10

Cómo proteger la clave privada SSH en Windows 10

Estoy usando el nuevo cliente ssh para Windows 10 y cuando intento conectarme con una clave privada aparece este error:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         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).

Sé que si estuviera en Linux necesitaría ejecutar chmod 600para configurar los permisos de los archivos, pero ¿qué se usa en Windows 10?

Respuesta1

Las claves solo deben ser accesibles para el usuario al que están destinadas y ninguna otra cuenta, servicio o grupo.

  • GUI:
    [Archivo]PropiedadesSeguridadAvanzado
    1. Dueño:Cambiar →Seleccione un director→ Introduzca el usuario de la clave → Aceptar
    2. Entradas de permiso:Eliminar todos excepto el usuario de la clave.
    3. Establecer el usuario de la clave enControl totalsi aún no está configurado
      1. Seleccionar usuario → Modificar → Control total → Aceptar
        O
      2. Añadir →Seleccione un director→ Introduzca el usuario de la clave → Aceptar
    4. Aceptar → Aceptar

  • 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
    
    

Respuesta2

Usando la GUI de Windows 10, aquí hay algunos detalles adicionales:

  1. Haga clic derecho en el archivo pem, propiedades, seguridad.
  2. establecer propietario para el usuario de la clave (es decir, usted)
  3. entradas de permiso, eliminar todos los usuarios, grupos y servicios excepto el usuario de la clave
  4. configure el usuario de la clave en "control total". Así es como lo hice:
  5. desactivar la herencia. Si ve una ventana emergente, elija convertir a permisos explícitos en este archivo.
  6. Agregue, seleccione una entidad principal, el tipo de objeto es Usuario, el nombre del objeto es el nombre de usuario del propietario de la clave (por ejemplo, si su directorio de inicio es la carpeta c:\Users\ben, escriba ben aquí). DE ACUERDO.
  7. Dale a ese usuario control total
  8. eliminar a todos los demás (usuarios autenticados, sistema, etc.)
  9. DE ACUERDO

Es importante que establezca como propietario el usuario de la clave antes de desactivar la herencia.

Respuesta3

Para ganar tiempo, es mucho más fácil que otras soluciones: simplemente mueva el archivo a una "ubicación segura" en su disco, como la %userprofile%/.sshcarpeta.

NOTA: Algunas personas dijeron que funciona en cualquier lugar de la unidad C: o en la carpeta de descargas del usuario, pero no lo probé.

información relacionada