Mensaje de error
WARNING: UNPROTECTED PRIVATE KEY FILE!
También se muestra 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.
Se imprime como un bloque entre líneas de `@`, seguido de «Permissions 0644 for '…' are too open.»; el modo y la ruta son los de tu archivo. `ssh-add` imprime el mismo bloque y se niega a añadir la clave.
OpenSSH client (ssh, ssh-add, scp, git over SSH) — key file permission check
Qué significa
OpenSSH se niega a usar un archivo de clave privada que otros usuarios de la máquina podrían leer. La clave se ignora («This private key will be ignored.»), así que la conexión suele continuar y después falla con «Permission denied (publickey)». El modo octal del mensaje muestra lo que permite el archivo; cualquier permiso más allá de la lectura y escritura del propietario (`0600` o `0400`) provoca el error, y en Windows la comprobación equivalente usa la ACL del archivo.
Por qué ocurre
El archivo de clave se creó con los permisos predeterminados
frecuenteLas claves escritas con `echo "$SSH_KEY" > key` en la CI, extraídas de archivos comprimidos, clonadas de repositorios o descargadas de un gestor de secretos reciben los permisos predeterminados de la umask (normalmente 0644).
ACL heredadas en Windows
frecuenteOpenSSH para Windows comprueba que ningún otro usuario o grupo (como `Users` o `Authenticated Users`) tenga acceso. Los archivos de un perfil de usuario suelen heredar permisos más amplios.
Montajes bind y recursos compartidos de red
ocasionalLos archivos montados desde el host en un contenedor, o desde recursos compartidos SMB/NTFS en WSL, pueden mostrar modos 0777/0755 que no se pueden cambiar directamente en el montaje.
Cómo solucionarlo
- 1.
Restringir el archivo a su propietario
`chmod 600` (o 400) en la clave y 700 en `~/.ssh`. En la CI, establece el modo en el mismo paso que escribe la clave.
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.
Corregir la ACL en Windows
Quita la herencia y concede acceso de lectura solo a tu cuenta.
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 las claves con un modo explícito
Los secretos con `mode: 0400` (o copiar la clave en el contenedor y aplicarle `chmod`) dan a OpenSSH los permisos que 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