Solución 1:
El directorio podrá requiere el conjunto de bits de ejecución para que pueda ingresarlo. No sé lo que probaste, pero no puedes ingrese un directorio sin el bit de ejecución, o lea archivos en él:
$ mkdir foo
$ echo "baz" > foo/bar
$ chmod 660 foo
$ cd foo
bash: cd: foo: Permission denied
$ cat foo/bar
cat: foo/bar: Permission denied
Es decir, a menos que su proceso tiene el conjunto de capacidades CAP_DAC_OVERRIDE POSIX (como lo tiene la raíz), lo que le permite ingresar directorios sin el conjunto de bits ejecutable, iirc.
Básicamente, debe tratar de mantener su directorio .ssh en 700, y todo lo que contiene en 600, solo para estar seguro. La página de manual de ssh brinda instrucciones por archivo sobre las propiedades requeridas y los modos de permiso para los archivos en ~/.ssh.
Solución 2:
Un directorio requiere permiso de ejecución para cd
en ello. Este es el comportamiento que se espera.
Solución 3:
Para ls o cd en un directorio, necesita permisos de ejecución. Si bien no los tiene, realmente no puede inspeccionar el contenido y ver los permisos de los archivos internos, por lo que lo más probable es que los permisos de los archivos sean incorrectos, si no puede detectarlos.
El permiso de directorio de 700 y los permisos de archivo de 644 están perfectamente bien configurados para mí.