Cette fois j'ai garde le journal, et la cause est etablie. La machine : un seul demarrage toujours en cours, aucune coupure reseau, aucun redemarrage de sshd. Le « trou » de 72 s dans son journal n'en etait pas un — l'entree qui le referme est ma propre commande de diagnostic. L'hote n'a rien fait parce que plus personne ne lui parlait. La cause : maxstartups 5:30:20 et maxsessions 2 (defauts Debian 10:30:100 et 10). Au-dela de 5 connexions non authentifiees simultanees, sshd en refuse une partie SANS BANNIERE — et le client rapporte « timed out during banner exchange », qui accuse le reseau pour un refus applicatif. Ces valeurs ne viennent d'aucun role : elles sont dans le GABARIT. Un reglage de securite qui ne vit que dans une image disque est invisible du depot et des preuves, et gouverne pourtant la voie d'administration. Corrige cote client : ansible.cfg n'avait AUCUNE section [ssh_connection]. pipelining + ControlPersist + control_path_dir court (un chemin trop long depasse la limite des sockets UNIX et ferait retomber Ansible sur une connexion par tache). Mesure sur le meme play de 30 taches : avant, une session par seconde ; apres, ZERO nouvelle session. Reste ouvert : MaxStartups/MaxSessions devraient etre declares par ssh_baseline plutot que dormir dans le gabarit. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
33 lines
1.4 KiB
INI
33 lines
1.4 KiB
INI
[defaults]
|
|
inventory = instance/inventories/lab/hosts.yml
|
|
roles_path = roles
|
|
filter_plugins = filter_plugins
|
|
interpreter_python = auto_silent
|
|
host_key_checking = False
|
|
retry_files_enabled = False
|
|
stdout_callback = default
|
|
|
|
[privilege_escalation]
|
|
become = True
|
|
become_method = sudo
|
|
become_user = root
|
|
|
|
[ssh_connection]
|
|
# Le sshd des hotes est DURCI par le gabarit, bien en dessous des defauts Debian :
|
|
# maxstartups 5:30:20 (defaut 10:30:100) maxsessions 2 (defaut 10)
|
|
# Au-dela de 5 connexions NON AUTHENTIFIEES simultanees, sshd en refuse une partie
|
|
# SANS envoyer de banniere — et l'echec se lit « Connection timed out during banner
|
|
# exchange », qui accuse le reseau. Mesure le 2026-08-09 sur infra-dns-01 : les sessions
|
|
# arrivaient a une par seconde, puis plus rien ; l'hote n'avait ni redemarre ni perdu son
|
|
# reseau, c'est Ansible qui ne parvenait plus a entrer.
|
|
#
|
|
# On ouvre donc MOINS de connexions au lieu d'affaiblir l'hote :
|
|
# pipelining — une seule connexion par tache au lieu de plusieurs allers-retours
|
|
# ControlPersist — la connexion maitresse survit entre les taches
|
|
# `ControlPath` court : un chemin trop long depasse la limite des sockets UNIX et fait
|
|
# retomber Ansible sur une connexion par tache, ce qui ramenerait le probleme.
|
|
pipelining = True
|
|
ssh_args = -C -o ControlMaster=auto -o ControlPersist=300s -o PreferredAuthentications=publickey
|
|
control_path_dir = /tmp/.ansible-cp
|
|
retries = 3
|
|
|