Ziehl ist es einen Rechner aus der Ferne sauber herunter zu fahren und das ohne eingabe eines Passworts. Aus Sicherheitsgründen lege ich zu diesem Zweck einen neuen Benutzer an, der root-Berechtigung nur für das herunterfahren des Rechners hat aber für alles andere hat er die Berechtigung nicht. Bei den folgenden Kommandos mussen die Platzhalter <user> und <hostname> natürlich durch richtige Namen ersetzt werden.
Benutzer mit dem Namen anlegen inklusive Home-Verzeichnis :
$ sudo adduser --home /home/remote --shell /bin/bash <user>
Nun können dem Benutzer die nötige Berechtigung geben werden. Dazu der Datei /etc/sudoers
die Zeite für den remote-User hinzufügen. Diese Datei sollte mit visudo
bearbeitet werden. Damit wird eine Syntaxprüfung durchgeführt, denn wenn man Pech hat und diese Datei nicht mehr gelesen werden kann, hat niemand mehr sudo-zugriff auf irgendetwas.
$ sudo visudo /etc/sudoers
User privilege specification
root ALL=(ALL:ALL) ALL
<user> ALL=NOPASSWD: /sbin/shutdown, /usr/sbin/reboot
Alternative kann auch eine Datei in /etc/sudoers.d/
angelegt werden zum Beispiel eine Datei mit dem Namen shutdowners
. In sie kann dann die Zeile wie oben beschrieben eingefügt werden.
Für einen Login ohne Passwort nun noch den Schlüssel für den Benutzer kopieren (siehe > > ssh ohne Passwort-Eingabe). Soll das Herunterfahren von mehreren Rechner erfolgen, muss der Schlüssel von allen Hosts auf den Remote-Rechner kopiert werden.
$ ssh-copy-id -i ~/.ssh/id_rsa.pub <user>@<hostname>
Nun kann der Rechner mit folgendem Kommande ferngesteuert herunter gefahren werden :
$ ssh <user>@<hostname> 'sudo shutdown now'