Перейти к содержимому
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)». Восьмеричный режим в сообщении показывает, что разрешено для файла; ошибку вызывает всё, что шире чтения и записи для владельца (`0600` или `0400`), а в Windows аналогичная проверка смотрит на ACL файла.

Почему это происходит

Как исправить

  1. 1.

    Оставьте доступ к файлу только владельцу

    `chmod 600` (или 400) для ключа и 700 для `~/.ssh`. В 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.

    Исправьте ACL в Windows

    Отключите наследование и дайте доступ на чтение только своей учётной записи.

    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

Связанные ошибки

Открыть всю базу ошибок подписей