Pourquoi on se retrouve dans cette situation ?
Ça arrive plus souvent qu'on ne le croit. Un changement de mot de passe mal géré, un script d'automatisation qui génère un mot de passe puis supprime le fichier temporaire avant de le sauvegarder, ou simplement un mot de passe noté quelque part qui s'est volatilisé.
Dans mon cas, c'est arrivé sur un serveur Debian 13 hébergé sur VMware ESXi : un script avait changé le mot de passe root puis effacé les fichiers temporaires avant que KeePass ne soit mis à jour. Résultat : plus d'accès SSH, plus de console distante opérationnelle.
La solution : booter en mode single-user via GRUB, qui donne un shell root sans authentification.
init=/bin/bash dans GRUB.C'est précisément pour ça qu'on chiffre ses disques en prod. Si votre serveur est accessible physiquement (datacenter mutualisé, ESXi partagé, VPS avec console IPMI…), le chiffrement disque est la seule protection contre cette attaque. Sans lui, n'importe qui ayant accès à la console peut devenir root en 5 minutes — comme on vient de le voir.
👉 Voir l'article : Installer un serveur Debian sécurisé avec chiffrement LUKS
Ce qu'il vous faut
- Un accès console à la VM ou au serveur physique (VMRC, iDRAC, IPMI, VNC…)
- GRUB2 comme bootloader (standard sur toutes les distros modernes)
- Environ 5 minutes
La procédure étape par étape
Redémarrer et accéder au menu GRUB
Redémarrez le serveur. Au démarrage, le menu GRUB s'affiche quelques secondes. Appuyez sur Échap ou maintenez Shift pour le figer si il disparaît trop vite.
Éditer l'entrée de boot
Sélectionnez votre entrée Linux et appuyez sur e pour éditer les paramètres du noyau.
Ajouter init=/bin/bash à la ligne linux
Repérez la ligne qui commence par linux (elle contient /vmlinuz). Allez en fin de ligne et ajoutez :
# Modifier pour ajouter init=/bin/bash à la fin :
linux /vmlinuz-6.12.86-amd64 root=/dev/mapper/debian-root ro quiet splash init=/bin/bash
# Appuyez sur Ctrl+X pour booter avec ces paramètres
^[[6~ = Page Down, ^[[D = flèche gauche…) qui se retrouvent littéralement dans votre mot de passe et le rendent inutilisable.Remonter le filesystem en lecture/écriture
Le shell démarre avec le filesystem en lecture seule. Sans cette étape, passwd échouera silencieusement.
# Aucun message = succès. Filesystem maintenant en lecture/écriture.
Changer le mot de passe root
Utilisez passwd sans argument — pas passwd root qui génère une erreur en single-user. Vous êtes déjà root.
Nouveau mot de passe :
Retapez le nouveau mot de passe :
passwd : mot de passe mis à jour avec succès
temp123). Une fois le serveur redémarré et l'accès SSH récupéré, changez-le immédiatement pour un mot de passe fort et sauvegardez dans votre gestionnaire (KeePassXC, Bitwarden…).Redémarrer normalement
[ OK ] Starting system...
# Le système reboot normalement. Reconnectez-vous en SSH.
Après le redémarrage : sécurisez l'accès
Reconnecté en SSH avec le mot de passe temporaire, appliquez immédiatement un mot de passe fort. J'utilise Python avec le module secrets pour générer des mots de passe cryptographiquement sûrs :
>>> charset = string.ascii_letters + string.digits + '{$%&@^~<>*+!?#_=-'
>>> pwd = ''.join(secrets.choice(charset) for _ in range(19))
>>> print(pwd, f"— {19*math.log2(len(charset)):.1f} bits")
K7#mP&zR2xWqL@8nT$ — 120.1 bits
Erreurs courantes
- « passwd root » → Usage: passwd [options] [LOGIN] — En single-user, tapez juste
passwdsans argument. - Read-only filesystem — Vous avez oublié le
mount -o remount,rw /. Faites-le avantpasswd. - Mot de passe inutilisable après reboot — Num Lock désactivé sur VMRC. Les séquences ANSI (
^[[6~= Page Down,^[[D= flèche gauche) se retrouvent littéralement dans le hash bcrypt. - GRUB ne s'affiche pas — Maintenez Shift au démarrage, ou configurez
GRUB_TIMEOUT=5dans/etc/default/grub.
Prévention : ne plus jamais se retrouver dans cette situation
La vraie leçon de cette expérience, c'est l'importance d'un gestionnaire de mots de passe couplé à une discipline d'écriture avant application :
- Générez le mot de passe
- Sauvegardez-le dans KeePassXC immédiatement
- Appliquez-le sur le serveur
- Vérifiez la connexion SSH avec le nouveau mot de passe avant de fermer la session courante
Avec cette discipline, la perte d'accès devient techniquement impossible — sauf défaillance matérielle.