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.