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?
fuente
learn more
, verá una lista de verificación de qué hacer cuando SSH no está funcionando, y menciona los permisos del directorio de inicio.Respuestas:
Este es el comportamiento predeterminado para SSH. Protege las claves de usuario mediante la aplicación
rwx------
de$HOME/.ssh
y 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$HOME
directorio, podría modificar maliciosamente los permisos$HOME/.ssh
, posiblemente secuestrando las claves de usuarioknown_hosts
o algo similar. En resumen, los siguientes permisos$HOME
será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+w
oo+w
existe en el$HOME
directorio. Sin embargo, el administrador puede anular este comportamiento definiendoStrictModes no
en elsshd_config
archivo de configuración (o similar), aunque debe quedar claro que esto no se recomienda .fuente
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.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.
fuente