Windows SSH: Los permisos para 'la clave privada' son demasiado abiertos

I've OpenSSH 7.6 instalado en Windows 7 para fines de prueba. SSH cliente & servidor de trabajo muy bien hasta que traté de acceder a uno de mi caja de AWS EC2 de este windows.

Parece que tengo que cambiar el permiso en el archivo de clave privada. Esto se puede hacer fácilmente en unix/linux con el comando chmod.

¿Qué pasa con las ventanas?

private-key.ppm se copia directamente de AWS y supongo que el permiso también.

C:\>ssh -V
OpenSSH_7.6p1, LibreSSL 2.5.3

C:\>ver

Microsoft Windows [Version 6.1.7601]

C:\>

C:\>ssh ubuntu@192.168.0.1 -i private-key.ppk
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for 'private-key.ppk' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "private-key.ppk": bad permissions
ubuntu@192.168.0.1: Permission denied (publickey).

C:\>
C:\>
C:\>ssh ubuntu@192.168.0.1 -i private-key.ppm
Warning: Identity file private-key.ppm not accessible: No such file or directory.
ubuntu@192.168.0.1: Permission denied (publickey).

C:\>

Usted localiza el archivo en el Explorador de Windows, haga clic en él con el botón derecho y luego seleccione "Propiedades". Navegue hasta la pestaña "Seguridad" y haga clic en "Avanzadas".

Cambie el propietario a usted, desactive la herencia y elimine todos los permisos. A continuación, conceder a sí mismo "Control total" y guardar los permisos. Ahora SSH ya no se quejará de los permisos de los archivos demasiado abiertos.

Debería terminar viéndose así:

[]

Comentarios (8)

Las claves sólo deben ser accesibles para el usuario al que van destinadas y para ninguna otra cuenta, servicio o grupo.

  • GUI:**
    • [Archivo] Propiedades - Seguridad - Avanzado
      1. Establecer Propietario al usuario de la llave
      2. Eliminar todos los usuarios, grupos y servicios, excepto el usuario de la llave, en Entradas de permiso.
      3. Establecer el usuario de la llave como Control total_.


  • CLI:

    lenguaje: lang-powershell -->

     :: Set Variable ::
     set key="C:\Path\to\key"
    
     :: Eliminar la herencia ::
     cmd /c icacls %key% /c /t /inheritance:d
    
     :: Establecer la propiedad como propietario ::
     cmd /c icacls %key% /c /t /grant %username%:F
    
     :: Eliminar todos los usuarios, excepto el propietario ::
     cmd /c icacls %key% /c /t /remove Administrator "Authenticated Users" BUILTIN\Administrators BUILTIN Everyone System Users
    
     :: Verificar ::
     cmd /c icacls %key%
Comentarios (8)

Tuve el mismo problema, y parece estar relacionado con la versión de SSH que estás ejecutando.

Si escribo

where ssh

Me sale...

C:\Windows\System32\OpenSSH\ssh.exe
C:\Program Files\Git\usr\bin\ssh.exe

Cuando ejecuto ssh -V en ambas ubicaciones, obtengo

OpenSSH_7.5p1, without OpenSSL
OpenSSH_7.3p1, OpenSSL 1.0.2k  26 Jan 2017

...respectivamente

Así que, cuando ejecuto ssh desde el directorio git/bin, funciona bien y no se queja de los permisos, pero al ejecutar la misma línea de comandos, utilizando la antigua instalación de SSH, vuelve con esto.

Load key "t:\\mykeys\\rich-private.ppk": invalid format
banana@127.0.0.127: Permission denied (publickey).

ps. los permisos en el archivo son solo de acceso total para mi, y nada más.

Comentarios (4)