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 0To power on I created a file and wrote:
wakeonlan xx:xx:xx:xx:xx:xxAnd 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?
3 Answers
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 sshCreate public and private keys using
ssh-key-genonlocal-hostby entering this command in yourlocalhost:ssh-keygenYou should save the generated key in:
/home/yourusername/.ssh/id_rsaPress 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-hostCopy the public key to the
remote-hostusingssh-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-hostand check in
.ssh/authorized_keysto make sure we haven't added extra keys that you weren't expecting.Note:
ssh-copy-idappends the keys to theremote-host’s/home/yourusername/.ssh/authorized_key.Login to
remote-hostwithout entering the password:ssh remote-host yourusername@remote-host:~$Access to
remote-hostwith 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.hostRun:
sudo visudoBy running
visudo, you edit/etc/sudoersin a safe manner.Add this line to the file:
yourusername ALL = NOPASSWD: /sbin/shutdownAfter 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 0Save and close the file, right-click on it to go to its Properties → Permissions, and tick Execute this file as a program.
Script done!
2For me on my 18.04 server, the keygen and sudoers edits did not work on their own. Finally, after a big hassle, I managed to remote shutdown my server with the following command:
plink -batch -ssh -P 222 -t user@server -pw XXX "sudo -S shutdown"I edited sudoers so that:
user ALL=(ALL) NOPASSWD:/sbin/shutdown You can use an user-account with a keyfile instead of a password (so you don't have to type in the password to login). You can also give the user a "default shell" that is not bash or sh, but "shutmedown.sh" or something like this, which will exec your shutdown-code.
7