Aller au contenu
ecdsa.com
OpenSSH client (ssh, ssh-add, scp, git over SSH)SSH

Message d’erreur

WARNING: UNPROTECTED PRIVATE KEY FILE!

Également affiché sous la forme

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

Affiché sous la forme d’un bloc entre des lignes de `@`, suivi de « Permissions 0644 for '…' are too open. » : le mode et le chemin sont ceux de votre fichier. `ssh-add` affiche le même bloc et refuse d’ajouter la clé.

OpenSSH client (ssh, ssh-add, scp, git over SSH) — key file permission check

Ce que cela signifie

OpenSSH refuse d’utiliser un fichier de clé privée que d’autres utilisateurs de la machine pourraient lire. La clé est ignorée (« This private key will be ignored. ») : la connexion se poursuit donc généralement, puis échoue avec « Permission denied (publickey) ». Le mode octal du message montre ce que le fichier autorise ; tout ce qui dépasse la lecture et l’écriture par le propriétaire (`0600` ou `0400`) déclenche l’erreur, et sous Windows, la vérification équivalente s’appuie sur l’ACL du fichier.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Restreindre le fichier à son propriétaire

    `chmod 600` (ou 400) sur la clé et 700 sur `~/.ssh`. Dans la CI, définissez le mode à l’étape même qui écrit la clé.

    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.

    Corriger l’ACL sous Windows

    Désactivez l’héritage et n’accordez l’accès en lecture qu’à votre compte.

    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.

    Monter les clés avec un mode explicite

    Des secrets avec `mode: 0400` (ou la copie de la clé dans le conteneur suivie d’un `chmod`) donnent à OpenSSH les permissions qu’il 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

Erreurs associées

Parcourir toute la base de données des erreurs de signature