¿Cómo arreglar el inicio de sesión de ssh que comienza a solicitar la contraseña y 'ls .ssh' se deniega el permiso?

1

Utilizo mi Mac para iniciar sesión en hosts remotos a través de Terminal.app usando ssh y claves locales almacenadas a.k.a. login sin contraseña a.k.a login de clave de autenticación.

De repente, los nuevos ssh intentos de inicio de sesión son:

  1. solicitando la contraseña, donde antes de los inicios de sesión no tenían contraseña
  2. devolver The authenticity of host XYZ can't be established.
  3. sí, respondiendo Are you sure you want to continue connecting (yes/no)?
    resultados en Failed to add the host to the list of known hosts (/Users/user/.ssh/known_hosts) .

También ls ~/.ssh da como resultado todos los "Permisos denegados":

ls: authorized_keys: Permission denied
ls: config: Permission denied
ls: id_rsa: Permission denied
ls: id_rsa.pub: Permission denied
ls: known_hosts: Permission denied

¿Cómo arreglar esto?

    
pregunta Pro Backup 28.11.2016 - 19:57

1 respuesta

1

Permisos de archivo incorrectos

Los permisos incorrectos se establecen en algunos archivos dentro de la carpeta .ssh. Échale un vistazo desde Terminal.app:

$ sudo ls -l ~/.ssh
-rw-r--r--+ 1 user  staff    393 27 nov 19:08 authorized_keys
-rw-r--r--+ 1 user  staff     16 26 apr  2016 config
-rw-------@ 1 user  staff   1743 16 sep  2008 id_rsa
-rw-r--r--@ 1 user  staff    400 16 sep  2008 id_rsa.pub
-rw-r--r--@ 1 user  staff  36654 26 nov 17:02 known_hosts

La primera columna ( -rw-r--r-- ) muestra los permisos de archivos unix para propietario, grupo y otros.

Los permisos de lectura para grupos y otros no están permitidos

El problema real aquí no es el primer r en la posición 2 de las columnas, sino el r en la posición 5 y 8. Esto indica que el grupo y otros tienen permisos de lectura para estos archivos. Y ese permiso de lectura para otras personas, entonces el propietario del archivo, no está permitido.

Corrección

Se puede arreglar eliminando todos los derechos del grupo y todos usando el comando chmod 600 filename . Para este caso específico, un comando que funcionaría es:

$ sudo chmod 600 ~/.ssh/{authorized_keys,config,id_rsa.pub,known_hosts}

Resultado

Después de ejecutar este comando, los nuevos permisos se ven así:

$ ls -l ~/.ssh
total 104
-rw-------+ 1 user  staff   393B 27 nov 19:08 authorized_keys
-rw-------+ 1 user  staff    16B 26 apr  2016 config
-rw-------+ 1 user  staff   1,7K 16 sep  2008 id_rsa
-rw-------+ 1 user  staff   400B 16 sep  2008 id_rsa.pub
-rw-------+ 1 user  staff    36K 26 nov 17:02 known_hosts 

Nota: el comando ls ahora se ejecuta sin sudo .

    
respondido por el Pro Backup 28.11.2016 - 19:57

Lea otras preguntas en las etiquetas