本文へスキップ
ecdsa.com
OpenSSH client (ssh, ssh-add, scp, git over SSH)SSH

エラーメッセージ

WARNING: UNPROTECTED PRIVATE KEY FILE!

別の表記

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

`@` の行で囲まれたブロックとして出力され、その後に「Permissions 0644 for '…' are too open.」が続きます。モードとパスは、実際のファイルのものです。`ssh-add` も同じブロックを出力し、鍵の追加を拒否します。

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

このエラーの意味

OpenSSH は、マシン上のほかのユーザーが読み取れる秘密鍵ファイルの使用を拒否します。鍵は無視される(「This private key will be ignored.」)ため、接続はたいていそのまま続行され、その後「Permission denied (publickey)」で失敗します。メッセージ内の 8 進数のモードは、ファイルが許可している操作を示します。所有者の読み取り・書き込み(`0600` または `0400`)を超える権限があると、このエラーになります。Windows では、同等のチェックにファイルの ACL が使われます。

発生する理由

修正方法

  1. 1.

    ファイルを所有者だけに制限する

    鍵には `chmod 600`(または 400)、`~/.ssh` には 700 を設定してください。CI では、鍵を書き出すのと同じステップでモードを設定してください。

    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.

    Windows で ACL を修正する

    継承を解除し、自分のアカウントにだけ読み取りアクセスを付与してください。

    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.

    明示的なモードで鍵をマウントする

    `mode: 0400` を指定したシークレット(または鍵をコンテナーにコピーして `chmod` で変更すること)で、OpenSSH が求めるパーミッションを満たせます。

    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

関連するエラー

署名エラーデータベースをすべて見る