SEC.01

Le playbook

Le run démarre en lecture seule : les sondes de reconnaissance décident de la suite. Les étapes qui suivent sont adaptées à la distribution et à l'état trouvés — une vraie machine est rarement propre.

  1. 01reconl’utilisateur existe-t-il ? dossier home et shell
  2. 02reconemplacement des clés (AuthorizedKeysFile peut être non standard)
  3. 03reconempreintes des clés actuelles
  4. 04reconla nouvelle clé est-elle valide ? son empreinte SHA256
  5. 05reconla nouvelle clé est-elle déjà présente ?
  6. 06reconSELinux (restorecon nécessaire sur ~/.ssh)
  7. 07agirSauvegarder les clésvérif
  8. 08agirAjouter la nouvelle clévérif
  9. 09agirCorriger propriétaire et permissionsvérif
  10. 10agirTester la nouvelle clé (connexion par l’utilisateur)vérif
  11. 11agirRetirer les anciennes clés (seulement si remove_old = true et test réussi)destructifvérif

SEC.02

Ce qu'elle vérifie

Chaque étape embarque sa propre vérification. Le run ne continue que si elle passe, donc ce que la recette annonce comme fait est ce qui est réellement sur le serveur.

  1. 01Sauvegarder les clésVérifié parls -1 "$(getent passwd ${user} | cut -d: -f6)"/.ssh/authorized_keys.bak.*attendu : un fichier de sauvegarde
  2. 02Ajouter la nouvelle cléVérifié pargrep -cxF '${pubkey}' "$(getent passwd ${user} | cut -d: -f6)/.ssh/authorized_keys"attendu : 1
  3. 03Corriger propriétaire et permissionsVérifié parH=$(getent passwd ${user} | cut -d: -f6) && stat -c "%a %U" "$H/.ssh" "$H/.ssh/authorized_keys"attendu : 700 <user> puis 600 <user>
  4. 04Tester la nouvelle clé (connexion par l’utilisateur)Vérifié parjournalctl --since '-15 min' --no-pager | grep 'Accepted publickey for ${user}'attendu : une ligne avec l’empreinte SHA256 de la nouvelle clé
  5. 05Retirer les anciennes clés (seulement si remove_old = true et test réussi)Vérifié parssh-keygen -lf "$(getent passwd ${user} | cut -d: -f6)/.ssh/authorized_keys"attendu : une seule empreinte : celle de la nouvelle clé

SEC.03

Les garde-fous

Les consignes non négociables que le run doit respecter, quoi qu'il trouve sur le serveur.

Utilise le home réel (getent passwd), jamais /home/<user> en dur (root = /root). N’écrase jamais authorized_keys avant que la NOUVELLE clé ait été testée avec succès ; sans test réussi, garde les anciennes. Ne verrouille jamais le dernier accès. N’affiche que des empreintes, pas les clés.

SEC.04

Les variables

Ce que vous choisissez avant de lancer — la recette s'occupe du reste.

NomSignification
${user}Utilisateur
${pubkey}Nouvelle clé publique
${remove_old}Retirer les anciennes clés (après test de la nouvelle)

SEC.05

Comment une recette s'exécute dans Servor

Servor est zero-knowledge : la plateforme ne peut rien exécuter seule. Quand vous lancez cette recette, un run lit la reconnaissance, planifie les étapes et demande votre validation. Chaque commande approuvée est signée par votre navigateur — avec une clé que le serveur ne voit jamais — puis relayée telle quelle à l'agent, qui vérifie la signature localement avant d'exécuter.

recipe — fail2ban_setup150+ in catalogue
security4 étapes · risque faible · idempotentelancer
reconsshd present? ufw active? existing jails?✓
actinstall fail2ban · write default jails✓
actenable service · restart sshd (safe)✓
verifytest ban 60s · jails active · sshd alive✓

recherche par intention — tapez « firewall », obtenez ufw

  • 01Reconnaissance en lecture seule avant tout changement
  • 02Chaque commande signée par votre navigateur, validée par vous
  • 03Chaque étape vérifiée avant de continuer, chaque run conservé dans l'historique

SEC.06

Bouton Deploy on Servor

Vous maintenez Rotation des clés SSH ou un projet qui en dépend ? Ajoutez ce bouton à votre README ou à votre site : en un clic, vos utilisateurs l'installent sur leur propre serveur.

Deploy on ServorFond sombre
Deploy on ServorFond clair
[![Deploy on Servor](https://servor.app/badges/deploy-on-servor.svg)](https://servor.app/deploy/rotate-ssh-keys)

SEC.07

Recette vérifiée

Lancez cette recette sur votre serveur

Connectez un serveur, lancez la recette, et validez chaque étape pendant que Servor exécute et vérifie. Plan gratuit, sans carte bancaire.