¿Cómo arreglar el inicio de sesión de ssh que comienza a pedir una contraseña y se deniega el permiso `ls .ssh`?

Utilizo mi Mac para iniciar sesión en hosts remotos a través de Terminal.app usando sshclaves almacenadas locales, también conocido como inicio de sesión sin contraseña, también conocido como inicio de sesión con clave de autenticación.

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

  1. pidiendo la contraseña, donde antes los inicios de sesión no tenían contraseña
  2. devolverThe authenticity of host XYZ can't be established.
  3. la respuesta afirmativa Are you sure you want to continue connecting (yes/no)?
    da como resultado Failed to add the host to the list of known hosts (/Users/user/.ssh/known_hosts).

También ls ~/.sshda 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?

TL;DR: versión: Pregunta: Los permisos son incorrectos. Respuesta: Corrija los permisos.
@Jakuje ¿Qué significa "TL; DR"?
[ en.wikipedia.org/wiki/… tl;dr y tldr;))

Respuestas (1)

Permisos de archivo incorrectos

Se establecen permisos incorrectos en algunos archivos dentro de la carpeta .ssh. Míralo 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 archivo Unix asignados para propietario, grupo y otros.

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

El verdadero problema aquí no es el primero ren la posición 2 de las columnas, sino el r's 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 otros que no sean el propietario del archivo no está permitido.

Arreglar

Se puede solucionar eliminando todos los derechos del grupo y de todos los que usen 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 lscomando ahora se ejecuta sin sudo.

Debería tener acceso de lectura en sus claves públicas.