Eu posso pelo menos explicar o que provavelmente está acontecendo: o . após as permissões na saída de ls -l indica a presença de uma política do SELinux, que substitui as permissões de arquivo com base no programa que está acessando o arquivo. Use ls -Z ~/.ssh/known_hosts para exibir a política do arquivo.
Presumivelmente, /usr/bin/ssh e seus programas complementares ( ssh-keygen , scp , etc.) são os únicos programas que têm permissão para acessar esse arquivo. Sou cético em relação a essa política: é útil editar ~/.ssh/known_hosts manualmente às vezes. No entanto, não entendo porque o curl gostaria de ler esse arquivo, em vez de deixar ssh e amigos fazerem isso.
Você pode usar o comando chcon para editar a política desse arquivo e restorecon para restaurar a política padrão. Veja o wiki do CentOS para mais informações sobre o SELinux.