Solution 1 :
Le répertoire sera exiger que le bit d'exécution soit défini pour que vous puissiez l'entrer. Je ne sais pas ce que vous avez testé, mais vous ne pouvez pas entrer dans un répertoire sans le bit d'exécution, ou y lire des fichiers :
$ mkdir foo
$ echo "baz" > foo/bar
$ chmod 660 foo
$ cd foo
bash: cd: foo: Permission denied
$ cat foo/bar
cat: foo/bar: Permission denied
Autrement dit, à moins que votre processus possède le jeu de capacités CAP_DAC_OVERRIDE POSIX (comme root), ce qui vous permet d'entrer dans des répertoires sans le jeu de bits exécutables, iirc.
Fondamentalement, vous devriez essayer de garder votre répertoire .ssh à 700, et tout ce qu'il contient à 600, juste pour être sûr. La page de manuel ssh donne par fichier des instructions sur les propriétaires requis et les modes d'autorisation pour les fichiers dans ~/.ssh.
Solution 2 :
Un répertoire nécessite une autorisation d'exécution pour cd
dans ça. C'est le comportement attendu.
Solution 3 :
Pour ls ou cd dans un répertoire, vous avez besoin des autorisations d'exécution. Bien que vous ne les ayez pas, vous ne pouvez pas vraiment inspecter le contenu et voir les autorisations des fichiers à l'intérieur, donc très probablement les autorisations de fichiers sont elles-mêmes erronées, si vous ne pouvez pas les contrôler.
L'autorisation de répertoire de 700 et les autorisations de fichier de 644 sont parfaitement configurées pour moi.