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
Le fichier de clé a été créé avec les permissions par défaut
fréquenteLes clés écrites par `echo "$SSH_KEY" > key` dans la CI, extraites d’archives, clonées depuis des dépôts ou téléchargées depuis un gestionnaire de secrets reçoivent les permissions par défaut de l’umask (généralement 0644).
ACL héritées sous Windows
fréquenteOpenSSH pour Windows vérifie qu’aucun autre utilisateur ou groupe (comme `Users` ou `Authenticated Users`) n’a accès au fichier. Les fichiers d’un profil utilisateur héritent souvent de permissions plus larges.
Montages bind et partages réseau
occasionnelleLes fichiers montés depuis l’hôte dans un conteneur, ou depuis des partages SMB/NTFS dans WSL, peuvent afficher des modes 0777/0755 impossibles à modifier sur place.
Comment corriger l’erreur
- 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.
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.
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