🔍 Introduction
Lorsque votre VPS devient inaccessible — mot de passe root perdu, réseau défaillant ou pare-feu bloquant l’accès SSH — il est souvent possible de le récupérer sans réinstallation grâce au Shadow Mode de Virtualizor.
Ce mode permet de monter le disque d’un VPS directement sur le serveur hôte afin d’accéder à ses fichiers et d’effectuer des réparations (réseau, mot de passe, iptables, CSF, etc.) en ligne de commande.
🧱 Étape 1 : Monter le disque du VPS en Shadow Mode
Connectez-vous à votre serveur hôte (le serveur physique où est hébergé le VPS) via SSH, puis exécutez les commandes suivantes :
modprobe nbd max_part=8
🔸 Cette commande charge le module nbd (Network Block Device) dans le noyau Linux.
L’option max_part=8 indique que chaque disque virtuel pourra contenir jusqu’à 8 partitions.
Cela prépare le système à connecter un disque virtuel (fichier image) comme s’il s’agissait d’un disque réel.
💡 Si votre serveur héberge plusieurs VPS
Le module nbd n’est chargé qu’une seule fois, mais vous pouvez connecter plusieurs disques VPS à des périphériques différents :
# Exemple : plusieurs VPS sur le même hôte
modprobe nbd max_part=8 # Charger le module (une seule fois)
qemu-nbd --connect=/dev/nbd0 /dev/vz/private/100.raw # VPS ID 100
qemu-nbd --connect=/dev/nbd1 /dev/vz/private/101.raw # VPS ID 101
qemu-nbd --connect=/dev/nbd2 /dev/vz/private/102.raw # VPS ID 102
Chaque VPS est associé à un périphérique distinct :
/dev/nbd0→ VPS 100/dev/nbd1→ VPS 101/dev/nbd2→ VPS 102
Par défaut, Linux crée jusqu’à 16 périphériques NBD (/dev/nbd0 à /dev/nbd15).
Si vous devez en gérer davantage, chargez le module avec :
modprobe nbd max_part=8 nbds_max=32
👉 Cette étape est le point de départ pour sélectionner le bon VPS à dépanner.
Identifiez le fichier disque du VPS à l’aide de :
ls /dev/vz/private/
Connexion du disque VPS
qemu-nbd --connect=/dev/nbd0 /dev/vz/private/100.raw
🔸 Cette commande utilise qemu-nbd pour associer un fichier disque VPS à un périphérique bloc.
– /dev/nbd0 : le périphérique bloc créé.
– /dev/vz/private/100.raw : le fichier image du VPS à monter.
💡 Le chemin dépend de votre configuration Virtualizor :
- Pour un VPS KVM :
/var/virtualizor/kvm/<VMID>/ - Pour OpenVZ :
/dev/vz/private/<VMID>.raw
Remplacez donc 100.raw par le fichier correspondant au VPS à réparer.
kpartx -av /dev/nbd0
🔸 Crée les points d’accès pour les partitions du disque (par exemple /dev/mapper/nbd0p1).
mount /dev/mapper/nbd0p1 /mnt
🔸 Monte la première partition du VPS sur le dossier /mnt afin d’y accéder.
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
🔸 Ces trois commandes « copient » les répertoires système de l’hôte dans le chroot du VPS pour que les outils système fonctionnent correctement.
chroot /mnt
🔸 Vous entrez maintenant dans le système du VPS comme si vous étiez connecté directement à l’intérieur.
Toutes les commandes suivantes s’exécuteront sur le VPS monté.
🔐 Étape 2 : Réinitialiser le mot de passe root
passwd
🔸 Tapez un nouveau mot de passe root, puis confirmez.
Ce mot de passe permettra de reprendre le contrôle du VPS une fois redémarré.
🌐 Étape 3 : Corriger la configuration réseau
Si nmcli ne fonctionne pas (souvent à cause d’une erreur D-Bus), configurez le réseau manuellement :
nano /etc/sysconfig/network-scripts/ifcfg-eth0
Ajoutez ou corrigez les lignes suivantes (en adaptant les IP à votre configuration) :
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=XXX.XXX.XXX.XXX
NETMASK=255.255.255.0
GATEWAY=XXX.XXX.XXX.1
DNS1=8.8.8.8
DNS2=1.1.1.1
Ensuite, dans /etc/resolv.conf :
nameserver 8.8.8.8
nameserver 1.1.1.1
🔥 Étape 4 : Réinitialiser iptables
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
🔸 Ces commandes effacent toutes les règles iptables existantes, puis rouvrent l’accès SSH (port 22).
Vous pouvez sauvegarder la configuration avec :
iptables-save > /etc/sysconfig/iptables
🛡️ Étape 5 : Neutraliser CSF (si installé)
ls /etc/csf/
nano /etc/csf/csf.conf
🔸 Si CSF est installé, ouvrez le fichier de configuration et activez le mode test :
TESTING = "1"
Cela désactive temporairement le pare-feu.
Vérifiez aussi les fichiers csf.allow et csf.deny pour débloquer votre IP.
🔄 Étape 6 : Sortie du chroot et redémarrage du VPS
exit
umount /mnt/dev
umount /mnt/proc
umount /mnt/sys
umount /mnt
kpartx -d /dev/nbd0
qemu-nbd --disconnect /dev/nbd0
virsh start v1002
🔸 Ces commandes démontent le disque et redémarrent le VPS (ici v1002).
Remplacez v1002 par l’identifiant de votre machine virtuelle.
✅ Résultat : VPS récupéré sans réinstallation
- Accès root restauré
- Réseau corrigé
- iptables réinitialisé
- CSF neutralisé
- VPS redémarré proprement
📦 Capsule Bash Nitrohost
Si vous devez réinitialiser iptables rapidement :
iptables -F && iptables -X && iptables -t nat -F && iptables -t nat -X
iptables -P INPUT ACCEPT && iptables -P FORWARD ACCEPT && iptables -P OUTPUT ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
Rédigé par : Christian – Nitrohost



