Si vous cherchez à mettre en place un système de reboot de serveur GNU/Linux à distance, voici une solution relativement simple et sécurisée.

Il s'agit en fait de créer un utilisateur dédié dont la seule possibilité d'action sera le redémarrage du système. Nous pourrons alors redémarrer la machine distante en nous connectant simplement par SSH sur la machine distante avec un utilisateur particulier :

ssh reboot@machine-distante

Commençons par créer cet utilisateur, que l'on nommera "reboot". Connectez-vous à la machine distante via SSH, puis créez le nouvel utilisateur avec la commande adduser :

# adduser reboot

Attention ! Veillez à choisir un mot de passe complexe, assez long, et composé de lettres majuscules, minuscules et de chiffres, pour réduire les risques d'intrusion non désirée.

Le redémarrage d'une machine Linux s'effectue par la commande reboot. Étant donné que seul l'utilisateur root a les permissions nécessaires pour exécuter cette commande, nous allons passer par sudo pour attribuer cette unique permission à notre utilisateur reboot :

Éditons le fichier de configuration de sudo (nommé /etc/sudoers) avec la commande visudo, pour ajouter une ligne pour l'utilisateur reboot :

reboot ALL=(ALL) NOPASSWD: /sbin/reboot

Cette ligne indique que l'utilisateur reboot a la permission d'exécuter, via sudo, la commande /sbin/reboot en tant que root sans avoir à entrer de mot de passe.

Enfin, l'astuce consiste à faire en sorte qu'une fois connecté avec cet utilisateur, nous n'ayons à entrer aucune commande ni à se déconnecter du système. Nous allons pour cela faire en sorte que le shell de l'utilisateur soit la commande reboot.

Nous allons créer un script dans le répertoire utilisateur de reboot, avec le contenu suivant :

#!/bin/bash
sudo /sbin/reboot

Nommons ce script "reboot.sh", son chemin d'accès sera alors /home/reboot/reboot.sh. Donnons-lui les droits d'exécution pour l'utilisateur :

chmod u+x /home/reboot/reboot.sh

La dernière étape consiste à faire en sorte que ce script soit le shell de l'utilisateur reboot. De cette façon, dès que l'utilisateur reboot se connectera via SSH sur la machine distante, le script sera immédiatement lancé, ce qui provoquera le redémarrage de la machine.

Pour cela, il faut éditer la ligne correspondant à l'utilisateur reboot dans le fichier /etc/passwd. Le dernier champ correspond à la commande exécutée pour lancer le shell de l'utilisateur, changeons-la pour notre script :

reboot:x:1001:1000:,,,:/home/reboot:/home/reboot/reboot.sh

Et voilà, notre système est en place ! Nous avons maintenant la possibilité de redémarrer notre serveur à distance simplement en se connectant via SSH.