Wie kann ich einen Remote-Host in meinem Netzwerk über ssh mit einem lokalen Host herunterfahren?

7

Die Frage ist einfach.
Welches Skript müsste ich verwenden, um einen Computer in meinem Netzwerk über ssh herunterzufahren?

Normalerweise würde ich zur Kommandozeile gehen und:

ssh desktop

delik@desktop's password: 

delik@desktop:~$ sudo shutdown -P 0

Zum Einschalten habe ich eine Datei erstellt und geschrieben:

wakeonlan xx:xx:xx:xx:xx:xx

Und gab es das ausführbare Bit

Zum Einschalten ist nur ein Doppelklick erforderlich. Wäre ich in der Lage, dasselbe zum Herunterfahren zu tun?

DeLiK
quelle

Antworten:

8

Angenommen, der Benutzer, den Sie in remote.host verwenden möchten, ist derselbe, den Sie in local.host verwenden.
Dazu müssen Sie zuerst Ihren local.host autorisieren, ohne Kennwort eine Verbindung zu Ihrem remote.host herzustellen.
Dazu müssen Sie: (wie hier beschrieben)

Schritt 1: Installieren Sie ssh

sudo apt-get install ssh

Schritt 2: Erstellen Sie öffentliche und private Schlüssel mit ssh-key-gen auf dem lokalen Host

Geben Sie auf Ihrem lokalen Host den folgenden Befehl ein:

ssh-keygen

Sie sollten den generierten Schlüssel speichern in:

/home/yourusername/.ssh/id_rsa

Drücken Sie zweimal die Eingabetaste, um die Passphrase leer zu lassen.

Your identification has been saved in /home/yourusername/.ssh/id_rsa.
Your public key has been saved in /home/yourusername/.ssh/id_rsa.pub.
The key fingerprint is:
XX:XX:XX:xX:XX:xX:XX:XX:XX:XX:XX:XX:XX:XX yourusername@local-host

Schritt 3: Kopieren Sie den öffentlichen Schlüssel mit ssh-copy-id auf den Remote-Host

yourusername@local-host$ ssh-copy-id -i ~/.ssh/id_rsa.pub remote-host
yourusername@remote-host's password:

Now try logging into the machine, with "ssh remote-host", and check in:

.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

Hinweis: ssh-copy-id hängt die Schlüssel an den /home/yourusername/.ssh/authorized_key des Remote-Hosts an

Schritt 4: Melden Sie sich beim Remote-Host an, ohne das Kennwort einzugeben

ssh remote-host
[email protected]:~$

Zugriff auf Remote-Host ohne Passwort. Erfolg!

Jetzt müssen Sie in der Lage sein , das sudo shutdown -P 0 ohne Passwort auszuführen .

Ändern Sie / etc / sudoers auf remote.host mit visudo

Auf diese Weise kann der Benutzer " Ihr Benutzername" den Befehl zum Herunterfahren ausführen, ohne dass ein Kennwort abgefragt wird.
Melden Sie sich beim Remote-Host an.

ssh remote.host

Lauf:

sudo visudo

Wenn Sie visudo ausführen, werden / etc / sudoers bearbeitet.
Hinzufügen der folgenden Zeile zu dieser Datei.

yourusername ALL = NOPASSWD: /sbin/shutdown

Kehren
Sie dazu zu Ihrem local.host zurück. Erstellen Sie eine neue leere Datei, fügen Sie diese Zeile ein und ändern Sie den Namen des remote.host

ssh remote.host sudo shutdown -P 0

Speichern und schließen Sie es, gehen Sie zu seiner Eigenschaften- Folie zu Berechtigungen und klicken Sie, um diese Datei als Programm auszuführen

Skript fertig!

DeLiK
quelle
Danke mene für deinen Kopf hoch :)
DeLiK
-1

Sie können ein Benutzerkonto mit einer Schlüsseldatei anstelle eines Kennworts verwenden (Sie müssen also nicht das Kennwort eingeben, um sich anzumelden). Sie können dem Benutzer auch eine "Standard-Shell" geben, die nicht "bash" oder "sh" ist, sondern "shutmedown.sh" oder ähnliches, wodurch Ihr Shutdown-Code ausgeführt wird.

mene
quelle
Würden Sie Ihre Antwort mit einigen Beispielen verbessern, wie Sie das genau tun können?
DeLiK
Sie können dies für den Anmeldeteil überprüfen: thegeekstuff.com/2008/11/… Sie können den Benutzernamen usermod -s /home/username/myscript.sh verwenden, um die Standard-Shell zu ändern. Das Skript sollte so etwas wie #! / Bin / bash shutdown -P now
mene
Sie haben Recht, das SSH-Anmeldeproblem ist gelöst, aber jetzt muss ich ein Skript mit einer "Pause" erstellen, damit es darauf wartet ssh desktop, dass es erfolgreich ausgeführt wird. Und danach habe ich ein weiteres Problem, wie man den Befehl sudoeingibt und das Passwort eingibt?
DeLiK
Das schaffe ich. Jetzt kann ich mit sudo shutdown -P 0 ohne Passwort
herunterfahren
Sie können ein Skript mit dem Befehl "sleep" anhalten. "Schlaf 10" für 10 Sekunden.
Mene