Mensagem de erro
WARNING: UNPROTECTED PRIVATE KEY FILE!
Também aparece como
- Permissions 0644 for '/path/to/key' are too open.
- It is required that your private key files are NOT accessible by others.
- This private key will be ignored.
O aviso aparece como um bloco entre linhas de `@`, seguido de “Permissions 0644 for '…' are too open.” — o modo e o caminho são os do seu arquivo. O `ssh-add` imprime o mesmo bloco e se recusa a adicionar a chave.
OpenSSH client (ssh, ssh-add, scp, git over SSH) — key file permission check
O que significa
O OpenSSH se recusa a usar um arquivo de chave privada que outros usuários da máquina poderiam ler. A chave é ignorada (“This private key will be ignored.”), então a conexão normalmente continua e depois falha com “Permission denied (publickey)”. O modo octal na mensagem mostra o que o arquivo permite; qualquer coisa além de leitura/escrita pelo dono (`0600` ou `0400`) dispara o erro, e no Windows a verificação equivalente usa a ACL do arquivo.
Por que acontece
O arquivo da chave foi criado com as permissões padrão
comumChaves gravadas com `echo "$SSH_KEY" > key` no CI, extraídas de arquivos compactados, clonadas de repositórios ou baixadas de um gerenciador de segredos recebem o padrão do umask (normalmente 0644).
ACLs herdadas no Windows
comumO OpenSSH do Windows verifica se nenhum outro usuário ou grupo (como `Users` ou `Authenticated Users`) tem acesso. Arquivos no perfil do usuário muitas vezes herdam permissões mais amplas.
Bind mounts e compartilhamentos de rede
ocasionalArquivos montados do host em um contêiner, ou de compartilhamentos SMB/NTFS no WSL, podem aparecer com modos 0777/0755 que não podem ser alterados ali mesmo.
Como corrigir
- 1.
Restringir o arquivo ao dono
`chmod 600` (ou 400) na chave e 700 em `~/.ssh`. No CI, defina o modo na mesma etapa que grava a chave.
bash chmod 600 ~/.ssh/id_ed25519 # owner read/write only (400 works too) chmod 700 ~/.ssh ls -l ~/.ssh/id_ed25519 # -rw------- 1 you you ... - 2.
Corrigir a ACL no Windows
Desabilite a herança e conceda acesso de leitura apenas à sua conta.
text REM Windows OpenSSH: remove inherited permissions, grant only your user icacls %USERPROFILE%\.ssh\id_ed25519 /inheritance:r icacls %USERPROFILE%\.ssh\id_ed25519 /grant:r "%USERNAME%":R - 3.
Montar as chaves com um modo explícito
Segredos com `mode: 0400` (ou copiar a chave para o contêiner e aplicar `chmod` nela) dão ao OpenSSH as permissões que ele exige.
yaml # docker compose: mount the key as a secret with explicit mode instead of a bind mount services: deployer: secrets: - source: deploy_key target: /root/.ssh/id_ed25519 mode: 0400