Aller au contenu
ecdsa.com
OpenSSH server (sshd) logSSH

Message d’erreur

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

Également affiché sous la forme

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

Formulation selon la version de sshd (vérifiée dans les sources d’OpenSSH) : 9.0 et versions ultérieures, « signature algorithm … not in PubkeyAcceptedAlgorithms » ; de 8.5 à 8.9, « key type … not in PubkeyAcceptedAlgorithms » ; 8.4 et versions antérieures, « key type … not in PubkeyAcceptedKeyTypes » (l’option a été renommée en 8.5). L’algorithme cité dans le message varie selon le client et la restriction appliquée par le serveur.

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

Ce que cela signifie

Le journal du serveur explique un « Permission denied (publickey) » : le client a présenté un algorithme de signature que le serveur n’accepte pas. Avec `ssh-rsa`, il s’agit du schéma de signature RSA fondé sur SHA-1, désactivé par défaut depuis OpenSSH 8.8 (2021). La clé RSA elle-même est correcte (la même clé fonctionne avec les algorithmes `rsa-sha2-256`/`rsa-sha2-512`), mais le client (un ancien OpenSSH, une bibliothèque obsolète ou un équipement embarqué) ne connaît que la variante SHA-1.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Utiliser une clé moderne ou un client moderne

    Une clé Ed25519 évite complètement le problème RSA/SHA-1 ; sinon, mettez à jour la bibliothèque cliente pour qu’elle négocie `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.

    Autoriser ssh-rsa de façon ciblée, si nécessaire

    Un bloc `Match` limité à un seul équipement ancien tient les signatures SHA-1 à l’écart de tous les autres. Considérez-le comme temporaire.

    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

Erreurs associées

Parcourir toute la base de données des erreurs de signature