SSH y permisos de directorio de inicio

53

Me llevó horas resolver este problema de SSH con una de las cuentas de mi clase en los servidores de mi escuela.

No podía ingresar a una cuenta de clase en particular sin ingresar mi contraseña, mientras que la autenticación sin contraseña funcionaba con mis otras cuentas de clase. El directorio .ssh / y todos sus contenidos tenían los mismos permisos correctos que las otras cuentas de clase.

Resulta que el problema eran los permisos establecidos en mi propio directorio personal. La autenticación sin contraseña no funcionó cuando los permisos en mi directorio HOME se establecieron en 770 (independientemente de los permisos establecidos para .ssh /), pero funcionó con los permisos establecidos en 755 o 700.

Alguien sabe por qué SSH hace esto? ¿Es porque los permisos del directorio de inicio son demasiado permisivos? ¿Por qué SSH se niega a autenticarse con las claves públicas / privadas cuando el directorio de inicio está configurado más permisivo que 700?

acción_patata
fuente
1
Confirmó las respuestas a continuación; el problema fue que los permisos de grupo en la carpeta de inicio se configuraron incorrectamente (el mensaje de error de auth.log fue: 'Autenticación rechazada: propiedad o modos incorrectos para directorio / inicio / <usuario>'). Veo que SSH tiene razón al ser exigente con los permisos de directorio de inicio.
action_potato
55
¿Sabías sobre los wikis de etiquetas que tenemos aquí? Si hace clic en ssh y luego learn more, verá una lista de verificación de qué hacer cuando SSH no está funcionando, y menciona los permisos del directorio de inicio.
Gilles 'SO- deja de ser malvado'
Ah, lo siento, no sabía sobre eso! Gracias por el aviso.
action_potato

Respuestas:

54

Este es el comportamiento predeterminado para SSH. Protege las claves de usuario mediante la aplicación rwx------de $HOME/.sshy asegurar que sólo el propietario tiene permisos de escritura $HOME. Si un usuario que no sea el propietario respectivo tiene permiso de escritura en el $HOMEdirectorio, podría modificar maliciosamente los permisos $HOME/.ssh, posiblemente secuestrando las claves de usuario known_hostso algo similar. En resumen, los siguientes permisos $HOMEserán suficientes para que SSH funcione.

  • rwx------
  • rwxr-x---
  • rwxr-xr-x

SSH no funcionará correctamente y enviará advertencias a las instalaciones de registro si existe alguna variación g+wo o+wexiste en el $HOMEdirectorio. Sin embargo, el administrador puede anular este comportamiento definiendo StrictModes noen el sshd_configarchivo de configuración (o similar), aunque debe quedar claro que esto no se recomienda .

George M
fuente
1
Gracias por mencionar StrictModes no. En mi configuración, se configura una ACL en el directorio de inicio del usuario objetivo y todos los descendientes para permitir modificaciones por parte de un usuario semiprivilegiado ( u:operator:rwx), y a SSH no le gustó esto.
intelfx
31

77x en su directorio de inicio significa que todos con el GID correcto pueden mover su directorio .ssh y reemplazarlo por otro. Los usuarios con el GID correcto tienen permisos de escritura / ejecución en el directorio de inicio y, por lo tanto, pueden cambiar el nombre / crear archivos / directorios.

SSH es muy exigente cuando se trata de permisos, y debería.

jippie
fuente