How could I shutdown a remote host, in my network thru ssh, with a local host?
For the following I am assuming that the user you are going to use in remote-host
is the same you use in local-host
.
In order to do what you want, you have to first authorize your local-host
to connect to you remote-host
with no password. To do that you have to (as described here):
-
Install
ssh
:sudo apt-get install ssh
-
Create public and private keys using
ssh-key-gen
onlocal-host
by entering this command in yourlocalhost
:ssh-keygen
You should save the generated key in:
/home/yourusername/.ssh/id_rsa
Press enter twice to leave the passphrase empty.
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
-
Copy the public key to the
remote-host
usingssh-copy-id
: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.Note:
ssh-copy-id
appends the keys to theremote-host
’s/home/yourusername/.ssh/authorized_key
. -
Login to
remote-host
without entering the password:ssh remote-host yourusername@remote-host:~$
Access to
remote-host
with no password. Success!
Now you have to be able to execute sudo shutdown -P 0
with no password. You can do that by modifying /etc/sudoers
on remote-host
with visudo
. That way, user yourusername
can execute the shutdown
command with no password asked.
-
Login to the
remote-host
:ssh remote.host
-
Run:
sudo visudo
By running
visudo
, you edit/etc/sudoers
in a safe manner. -
Add this line to the file:
yourusername ALL = NOPASSWD: /sbin/shutdown
-
After doing that, get back to your
local-host
, create a new empty file and paste this line, modifying theremote-host
's name:ssh remote.host sudo shutdown -P 0
-
Save and close the file, right-click on it to go to its Properties → Permissions, and tick Execute this file as a program.
Script done!
Related videos on Youtube
DeLiK
Updated on September 18, 2022Comments
-
DeLiK over 1 year
The question is simple.
What would be the script I would have to use to shut down a computer in my network thru ssh.Normaly i would go to command line and:
ssh desktop delik@desktop's password: delik@desktop:~$ sudo shutdown -P 0
To power on I created a file and wrote:
wakeonlan xx:xx:xx:xx:xx:xx
And gave it the executable bit
That way to power on it requires only a double click. Would i be capable of doing the same to shutdown?
-
DeLiK over 11 yearsWould you improve your answer with some examples on how to do that exactly?
-
mene over 11 yearsYou can check this out for the login part: thegeekstuff.com/2008/11/… You can use usermod -s /home/username/myscript.sh username to change the default shell. The script should be something like #!/bin/bash shutdown -P now
-
DeLiK over 11 yearsYou are right, the ssh login problem is solved, but now I have to build a script with a "pause" so it waits for
ssh desktop
to happen succesfully. And after that i have another problem how to give the command insudo
and enter the password? -
DeLiK over 11 yearsI manage to do that. Now I can shut down with sudo shutdown -P 0 with no password
-
Peachy over 11 years@mene, would you consider editing your answer to add the details you posted as comments? That way, your answer will be clear, complete and useful to other users.
-
Kevin Vella about 3 yearsJust what I needed, thanks a lot!