2018-02-18 05:10:44 +0000 2018-02-18 05:10:44 +0000
122
122

Windows SSH: Los permisos para 'private-key' son demasiado abiertos

Tengo OpenSSH 7.6 instalado en Windows 7 para hacer pruebas. El cliente y el servidor SSH funcionan bien hasta que intenté acceder a una de mis cajas AWS EC2 desde 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.

¿Y en windows?

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:\>

Respuestas (14)

150
150
150
2018-02-18 08:57:27 +0000

Localice el archivo en el Explorador de Windows, haga clic con el botón derecho del ratón y seleccione “Propiedades”. Ve a la pestaña “Seguridad” y haz clic en “Avanzadas”.

Cambia el propietario por ti, desactiva la herencia y elimina todos los permisos. Luego concédase “Control total” y guarde los permisos. Ahora SSH ya no se quejará de los permisos de los archivos demasiado abiertos.

Debería terminar viéndose así:

29
29
29
2018-06-08 15:34:57 +0000

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

  • GUI:
  • Propiedades del Archivo - Seguridad - Avanzadas
  • Poner Propietario al usuario de la llave
  • Eliminar todos los usuarios, grupos y servicios, excepto el usuario de la llave, en Entradas de permiso
  • Poner el usuario de la llave en Control total_

  • CLI:

15
15
15
2018-09-08 13:27:16 +0000

Además de la respuesta proporcionada por ibug. Ya que estaba usando el sistema ubuntu dentro de windows para ejecutar el comando ssh. Todavía no estaba funcionando. Así que hice

sudo ssh ...

y entonces funcionó

5
5
5
2018-04-05 11:53:43 +0000

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

Si escribo

where ssh

obtengo…

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í, 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, usando la antigua instalación de SSH, me devuelve esto.

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

ps. los permisos del archivo son de acceso total para mí, y nada más.

5
5
5
2019-10-04 13:28:46 +0000

use el siguiente comando en su llave funciona en windows

icacls .\private.key /inheritance:r
icacls .\private.key /grant:r "%username%":"(R)"
4
4
4
2019-09-06 18:17:27 +0000

Tuve un problema similar pero estaba en el trabajo y no tengo la capacidad de cambiar los permisos de los archivos en mi ordenador del trabajo. Lo que tienes que hacer es instalar WSL luego copiar tu llave al directorio oculto de ssh en WSL:

cp <path to your key> ~/.ssh/<name of your key>

Ahora deberías poder modificar los permisos normalmente.

sudo chmod 600 ~/.ssh/<your key's name>

Luego ssh usando WSL:

ssh -i ~/.ssh/<name of your key> <username>@<ip address>
3
3
3
2019-02-16 21:58:34 +0000
2
2
2
2019-08-12 12:39:01 +0000

Puedes usar icacls en windows en lugar de chmod para ajustar el permiso de los archivos. Para dar al usuario actual permiso de lectura y eliminar todo lo demás,

icacls <file name> /inheritance:r
icacls <file name> /grant:r "%username%":"(R)"
1
1
1
2019-10-03 21:07:46 +0000

Esto es sólo una versión de secuencias de comandos de @JW0914 respuesta de la CLI, por lo que upvote él en primer lugar. Además, es mi primer script de PowerShell, así que las sugerencias son bienvenidas.

# DO the following in powerhsell if not already done:
# Set-ExecutionPolicy RemoteSigned

# NOTE: edit the path in this command if needed
$sshFiles=Get-ChildItem -Path C:\DevContainerHome\.ssh -Force

$sshFiles | % {
  $key = $_
  & icacls $key /c /t /inheritance:d
  & icacls $key /c /t /grant %username%:F
  & icacls $key /c /t /remove Administrator "Authenticated Users" BUILTIN\Administrators BUILTIN Everyone System Users
}

# Verify:
$sshFiles | % {
  icacls $_
}
1
1
1
2019-11-28 14:45:28 +0000

Una sola línea en CMD podría hacer el truco (como se describe aquí: https://serverfault.com/a/883338/550334 ), es decir, añadir la clave desde stdin en lugar de cambiar los permisos:

cat /path/to/permission_file | ssh-add -k

Para comprobar si se ha añadido la clave:

ssh-add -l
0
0
0
2019-10-29 04:30:11 +0000

Utiliza Mingw-w64.

Infos: http://mingw-w64.org/doku.php

Descarga con Git para Windows, o directamente.

Disponible aquí: https://github.com/mirror/mingw-w64

git clone https://github.com/mirror/mingw-w64

También tiene otros comandos útiles para Linux como tar y gzip.

0
0
0
2019-11-26 06:10:29 +0000

Soy un usuario de Windows, usando el bash de Windows y seguí todos los pasos para establecer el permiso usando la GUI de Windows, y sigue sin funcionar y se queja:

Permissions 0555 for 'my_ssh.pem' are too open.
It is required that your private key files are NOT accessible by others.

El añadí sudo al frente del comando ssh y simplemente funciona. Espero que esto sea de ayuda para otros.

0
0
0
2020-02-24 23:03:22 +0000

No he podido conseguir que ninguna de estas respuestas me funcione debido a problemas de permisos, así que compartiré mi solución:

  1. Ir a C:\Users\UserName.ssh

  2. Copiar y pegar el archivo id_rsa

  3. Cámbiale el nombre por otro, por ejemplo, example

  4. Abra el archivo renombrado example y sustituya la clave por su propia clave privada

  5. cd a ese directorio

  6. Haga ssh -i example example@127.0.0.1 e introduzca su clave.

-1
-1
-1
2019-02-08 14:20:33 +0000

¡Respuesta de iBug funciona bien! Puedes seguir eso y deshacerte de este problema.

Pero hay algunas cosas que hay que borrar, ya que me encontré con problemas durante la configuración de los permisos y tardé unos minutos en descubrir el problema.

Siguiendo la respuesta de iBug, se eliminan todos los permisos pero ¿cómo se establece el permiso de control total para uno mismo? ahí es donde me quedé atascado al principio ya que no sabía cómo hacerlo.

Después de deshabilitar la herencia, podrás eliminar todos los usuarios o grupos permitidos.

Una vez que haya terminado con eso,

Haga clic en Add luego haga clic en Set a Principal luego introduzca System y Administrators y your email addredd en el campo en la parte inferior y luego haga clic en check names.

Cargará el nombre si el usuario existe. Luego, haga clic en OK > Escriba Allow > Permisos Básicos Full Control > Okay

Esto configurará el permiso de control total para el SISTEMA, los administradores y su usuario.

Después de eso intente hacer ssh usando esa llave. Ahora debería estar resuelto.

Yo tuve el mismo problema y lo resolví usando este método. Si hay algún usuario o grupo con ese nombre entonces lo cargará.

-Screenshots- Permission Entries Select a Principal/ Select User or Groups