Ansible SSH, Authentication failed, vieilles machines
Auteur : Philippe Le Van - @plv@framapiaf.org
Date : 9 mars 2023
Problématique
On a un souci de connexion SSH sur de vieux serveurs (debian jessie par exemple).
Quand on cherche à déployer avec ansible sur une de ces machines, on reçoit le message suivant :
Failed to authenticate: Authentication failed.
Quand on lance ansible avec le paramètre -vvv
, on voit le détail suivant :
1 2 3 4 5 6 |
|
Analyse
Le problème vient d'un changement de comportement de la librairie python paramiko. On peut voir l'issue suivante : https://github.com/ansible/ansible/issues/76737
Pour contourner ce problème, Ansible a ajouté un nouveau paramètre use_rsa_sha2_algorithms
qui permet de désactiver le protocole rsa-sha2.
Mais cette option n'est pas disponible dans la version 2.14 d'ansible-core. Vous pouvez consulter La documentation de l'option use_rsa_sha2_algorithms.
Résolution
Mise à jour d'Ansible (indispensable)
La doc nous dit qu'on doit avoir une version d'ansible-core 2.14. Pour cela, nous avons installé Ansible 7.3.0.
Solution par host (recommandée)
Dans l'inventory, on peut ajouter une variable pour indiquer pour un host donné si on doit utiliser l'ancien fonctionnement ou pas :
1 2 3 4 5 6 |
|
Solution au cas par cas (bof)
Au moment de l'appel à ansible, on peut définir une variable d'environnement. J'ai du mal à voir le cas d'usage, mais bon, ça existe.
1 |
|
Solution globale (déconseillée)
Dans ansible.cfg, on peut ajouter les lignes suivantes, mais ça veut dire que tous vos serveurs sont vieillots...
1 2 |
|