Saltar al contenido
ecdsa.com
OpenSSH client (ssh, ssh-add, scp, git over SSH)SSH

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

Cómo solucionarlo

  1. 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. 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. 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

Errores relacionados

Explorar toda la base de datos de errores de firma