Fehlermeldung
WARNING: UNPROTECTED PRIVATE KEY FILE!
Auch ausgegeben als
- 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.
Wird als Block zwischen `@`-Zeilen ausgegeben, gefolgt von „Permissions 0644 for '…' are too open.“ – Modus und Pfad sind die deiner Datei. `ssh-add` gibt denselben Block aus und weigert sich, den Schlüssel hinzuzufügen.
OpenSSH client (ssh, ssh-add, scp, git over SSH) — key file permission check
Was der Fehler bedeutet
OpenSSH weigert sich, eine Datei mit einem privaten Schlüssel zu verwenden, die andere Benutzer auf dem Rechner lesen könnten. Der Schlüssel wird ignoriert („This private key will be ignored.“), deshalb läuft die Verbindung meist weiter und scheitert dann mit „Permission denied (publickey)“. Der oktale Modus in der Meldung zeigt, was die Datei erlaubt; alles über Lesen und Schreiben für den Eigentümer hinaus (`0600` oder `0400`) löst die Meldung aus, und unter Windows nutzt die entsprechende Prüfung die ACL der Datei.
Warum der Fehler auftritt
Die Schlüsseldatei wurde mit Standardberechtigungen erstellt
häufigSchlüssel, die in der CI per `echo "$SSH_KEY" > key` geschrieben, aus Archiven entpackt, aus Repositorys geklont oder aus einem Secret Manager heruntergeladen werden, erhalten den Standardwert der umask (meist 0644).
Geerbte ACLs unter Windows
häufigOpenSSH für Windows prüft, dass keine anderen Benutzer oder Gruppen (etwa `Users` oder `Authenticated Users`) Zugriff haben. Dateien in einem Benutzerprofil erben oft weiter gefasste Berechtigungen.
Bind-Mounts und Netzwerkfreigaben
gelegentlichDateien, die vom Host in einen Container oder von SMB-/NTFS-Freigaben in WSL eingehängt werden, können die Modi 0777/0755 zeigen, die sich an Ort und Stelle nicht ändern lassen.
So behebst du den Fehler
- 1.
Datei auf den Eigentümer beschränken
`chmod 600` (oder 400) für den Schlüssel und 700 für `~/.ssh`. Setze den Modus in der CI im selben Schritt, der den Schlüssel schreibt.
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.
ACL unter Windows korrigieren
Entferne die Vererbung und gewähre nur deinem Konto Lesezugriff.
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.
Schlüssel mit explizitem Modus einhängen
Secrets mit `mode: 0400` (oder das Kopieren des Schlüssels in den Container mit anschließendem `chmod`) geben OpenSSH die Berechtigungen, die es verlangt.
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