Este artículo describe un problema inusual y una solución inesperada relacionada con el acceso SSH a un servidor. El autor se encontró con que, después de transferir archivos a su servidor usando scp, ya no podía iniciar sesión a través de SSH, a pesar de que otros servicios en el servidor funcionaban correctamente. Tras una investigación inicial que descartó problemas con el archivo authorized_keys, el autor descubrió que los permisos del directorio home del usuario habían sido cambiados a rwxrwxrwx (777), lo que impidió la autenticación SSH.
OpenSSH, por razones de seguridad, rechaza el uso de claves privadas si los archivos que las contienen son accesibles a otros usuarios (requiere permisos 644 o más restrictivos). De manera similar, SSHD se niega a autenticar si el directorio home del usuario tiene permisos demasiado amplios. La causa raíz resultó ser el comando scp utilizado para transferir archivos. El comando, scp -r . host:, transfirió recursivamente todo el contenido de un directorio local al directorio home del servidor. El problema se agravó porque el directorio local que se estaba transfiriendo tenía permisos 777. scp replica los permisos de los archivos y directorios durante la transferencia, incluso si el directorio de destino ya existe. Por lo tanto, al transferir archivos desde un directorio con permisos 777, scp modificó los permisos del directorio home en el servidor a 777, desencadenando el rechazo de la clave SSH.
La solución fue simple: cambiar los permisos del directorio home a rwx------ (700), lo que restringió el acceso solo al usuario propietario. El autor informó del problema al rastreador de errores de OpenSSH, y se implementó una corrección que se incluirá en la versión 10.3. Este incidente destaca la importancia de comprender cómo scp maneja los permisos y la necesidad de evitar transferir archivos desde directorios con permisos excesivamente amplios, especialmente cuando se trabaja con servidores remotos.
