Você está certo de que as permissões internas são funcionalmente irrelevantes com a estrutura de diretórios e as permissões fornecidas, mas há uma coisa que está faltando. Links rígidos compartilham permissões.
No exemplo acima, se você criar um link físico (não um link simbólico) apontando para ~/.ssh/id_rsa
em outro lugar, o arquivo resultante espelhará as permissões de ~/.ssh/id_rsa
e, assim, as pessoas poderão acessá-lo se o usuário tiver acesso ao diretório inicial, ou por meio do novo local.
Como resultado, o requisito de SSH é realmente menos rigoroso do que deveria ser tecnicamente (Idealmente, suas chaves privadas nesse diretório precisam ter permissões de 0600, não de 0640), mas a maioria das pessoas não sabe ou se importa links mais (eles não são extremamente úteis em comparação com links simbólicos (que podem cruzar limites do sistema de arquivos) ou reflinks (que dividirão o link em todos os casos quando um dos links for gravado).
Quanto aos outros arquivos, ainda há algum requisito de segurança. Em particular:
- O arquivo
.ssh/authorized_keys
contém informações sobre quais outras chaves públicas você também tem acesso. - O arquivo
.ssh/known_hosts
contém informações sobre a quais sistemas você se conectou (o OpenSSH fornece funcionalidade para proteger isso sem permissões usando um hash unidirecional nos nomes de host e endereços IP). - As partes públicas de suas chaves podem ser usadas para combinar com
.ssh/authorized_keys
em outros sistemas para associar contas ou, em teoria, para atacar sua chave privada (embora este segundo caso seja principalmente teórico, a menos que você esteja lidando com um governo adversário nível).
Todos esses arquivos podem ser usados para descobrir outros locais potenciais para roubar suas informações e, portanto, devem ser idealmente protegidos.