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 [email protected] -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
[email protected]: Permission denied (publickey).
C:\>
C:\>
C:\>ssh [email protected] -i private-key.ppm
Warning: Identity file private-key.ppm not accessible: No such file or directory.
[email protected]: 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í:
[]
Las claves sólo deben ser accesibles para el usuario al que van destinadas y para ninguna otra cuenta, servicio o grupo.
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%
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
[email protected]: Permission denied (publickey).
ps. los permisos en el archivo son solo de acceso total para mi, y nada más.