Résoudre le problème « no mutual signature algorithm » avec SSH sur un vieux serveur
Si vous utilisez BackupPC (ou tout autre outil basé sur SSH) pour vous connecter à une machine distante et que vous tombez sur ce type de log en mode debug :
debug1: Offering public key: /var/lib/backuppc/.ssh/id_rsa RSA SHA256:…
debug1: send_pubkey_test: no mutual signature algorithm
debug1: Authentications that can continue: publickey,password
… et que malgré la clé publique bien installée sur le serveur distant, SSH vous demande toujours un mot de passe, c’est probablement dû à une incompatibilité entre votre client SSH récent et le serveur SSH distant (trop ancien).
🕵️ Comprendre le problème
Dans le log SSH, on peut lire :
debug1: Offering public key: …
debug1: send_pubkey_test: no mutual signature algorithm
debug1: Authentications that can continue: publickey,password
💡 Que se passe-t-il ?
-
Le client propose sa clé (RSA ou ED25519).
-
Le serveur refuse car il ne connaît pas (ou ne supporte plus) l’algorithme de signature proposé.
-
Le client retombe sur la méthode
password.
Dans la même session, on remarque également :
Remote software version OpenSSH_6.0p1 Debian-4+deb7u7
🧰 La solution : forcer l’algorithme ssh-rsa
Pour rendre votre client compatible avec le serveur ancien, il faut lui dire explicitement d’accepter de signer avec l’ancien algorithme ssh-rsa.
🔹 Tester avec la ligne de commande
Lancez votre connexion SSH avec l’option suivante :
ssh -o PubkeyAcceptedAlgorithms=+ssh-rsa -i ~/.ssh/id_rsa backup@machine-cible
-
-o PubkeyAcceptedAlgorithms=+ssh-rsa→ ajoutessh-rsadans la liste des algorithmes acceptés. -
-i ~/.ssh/id_rsa→ utilise votre clé privée RSA. -
backup@machine-cible→ remplacez par l’utilisateur et le serveur que vous ciblez.
Si tout est en place (clé publique bien installée et permissions correctes), la connexion devrait maintenant se faire sans demander de mot de passe.
🔹 Configurer durablement
Pour ne pas avoir à retaper cette option à chaque connexion, configure-la dans votre fichier ~/.ssh/config.
Éditez (ou créez) le fichier :
nano ~/.ssh/config
Ajoutez :
Host machine-cible
User backup
IdentityFile ~/.ssh/id_rsa
PubkeyAcceptedAlgorithms +ssh-rsa
Sauvegardez et quittez.
Vous pouvez maintenant simplement faire :
ssh user@machine-cible
… et le client utilisera automatiquement la bonne clé et l’algorithme compatible.
Si tout se passe bien, vous devriez pouvoir utiliser SSH sans mot de passe, même sur un serveur ancien.
Pour une solution plus pérenne et sécurisée, pensez tout de même à planifier une mise à jour du serveur SSH à une version plus récente.