Перейти к содержимому
ecdsa.com
OpenSSH server (sshd) logSSH

Сообщение об ошибке

userauth_pubkey: signature algorithm ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]

Также выводится как

  • userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]
  • userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedKeyTypes [preauth]
  • userauth_pubkey: signature algorithm ssh-ed25519 not in PubkeyAcceptedAlgorithms [preauth]

Формулировки по релизам sshd (сверено с исходным кодом OpenSSH): 9.0 и новее — «signature algorithm … not in PubkeyAcceptedAlgorithms»; 8.5–8.9 — «key type … not in PubkeyAcceptedAlgorithms»; 8.4 и более ранние — «key type … not in PubkeyAcceptedKeyTypes» (параметр переименован в 8.5). Алгоритм в сообщении зависит от клиента и от ограничений сервера.

OpenSSH server (sshd) log — the client sees only "Permission denied (publickey)."

Что это означает

Журнал сервера объясняет «Permission denied (publickey)»: клиент предъявил алгоритм подписи, которого сервер не принимает. В случае `ssh-rsa` это схема подписи RSA на основе SHA-1, отключённая по умолчанию начиная с OpenSSH 8.8 (2021). Сам ключ RSA в порядке (тот же ключ работает с алгоритмами `rsa-sha2-256`/`rsa-sha2-512`), но клиент (старый OpenSSH, устаревшая библиотека или встраиваемое устройство) знает только вариант с SHA-1.

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

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

  1. 1.

    Используйте современный ключ или современный клиент

    Ключ Ed25519 полностью снимает проблему RSA/SHA-1; иначе обновите клиентскую библиотеку, чтобы она согласовывала `rsa-sha2-*`.

    bash
    # Best: a modern key type, which every current client signs correctly
    ssh-keygen -t ed25519 -C "deploy@ci" -f ~/.ssh/deploy_ed25519
    # Or keep the RSA key and use a client that supports rsa-sha2-256/512
    # (OpenSSH >= 7.2, Paramiko >= 2.9, JSch fork 0.2.x, golang.org/x/crypto >= 2022, PuTTY >= 0.75)
  2. 2.

    Если без этого никак, разрешите ssh-rsa точечно

    Блок `Match` для одного устаревшего устройства не допускает подписи SHA-1 для всех остальных. Считайте это временной мерой.

    text
    # /etc/ssh/sshd_config.d/legacy-device.conf - only for one legacy client, and remove it afterwards
    Match Address 10.0.5.17
        PubkeyAcceptedAlgorithms +ssh-rsa

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

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