问题很简单。
我需要使用什么脚本才能通过 ssh 关闭网络中的计算机?
通常我会进入命令行并:
ssh desktop
delik@desktop's password:
delik@desktop:~$ sudo shutdown -P 0
为了启动,我创建了一个文件并写入:
wakeonlan xx:xx:xx:xx:xx:xx
并赋予它可执行位
这样,只需双击即可开机。我能用同样的方式关机吗?
答案1
下面我假设您将要使用的用户remote-host
与您在 中使用的用户相同local-host
。
为了执行您想要的操作,您必须首先授权您的设备无需密码即可local-host
与您建立连接remote-host
。为此,您必须 (如这里所述):
安装
ssh
:sudo apt-get install ssh
通过在您的中输入以下命令
ssh-key-gen
来创建公钥和私钥:local-host
localhost
ssh-keygen
您应该将生成的密钥保存在:
/home/yourusername/.ssh/id_rsa
按两次回车键将密码保留为空。
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
将公钥复制到
remote-host
使用ssh-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
并检查
.ssh/authorized_keys
以确保我们没有添加您意想不到的额外钥匙。注意:
ssh-copy-id
将键附加到remote-host
的/home/yourusername/.ssh/authorized_key
。remote-host
无需输入密码即可登录:ssh remote-host yourusername@remote-host:~$
remote-host
无需密码即可访问。成功!
现在你必须能够sudo shutdown -P 0
无需密码即可执行。您可以通过修改/etc/sudoers
来实现。这样,用户无需输入密码即可执行命令。remote-host
visudo
yourusername
shutdown
登录到
remote-host
:ssh remote.host
跑步:
sudo visudo
通过运行
visudo
,您可以/etc/sudoers
以安全的方式进行编辑。将这一行添加到文件:
yourusername ALL = NOPASSWD: /sbin/shutdown
完成后,返回到您的
local-host
,创建一个新的空文件并粘贴此行,修改的remote-host
名称:ssh remote.host sudo shutdown -P 0
保存并关闭文件,right-click然后转到其特性→权限,并勾选将此文件作为程序执行。
脚本完成!
答案2
对于我的 18.04 服务器来说,密钥生成器和sudoers
编辑无法自行工作。最后,经过一番大麻烦,我设法使用以下命令远程关闭了我的服务器:
plink -batch -ssh -P 222 -t user@server -pw XXX "sudo -S shutdown"
我进行了sudoers
如下编辑:
user ALL=(ALL) NOPASSWD:/sbin/shutdown
答案3
您可以使用带有密钥文件的用户帐户来代替密码(这样您就不必输入密码来登录)。您还可以为用户提供一个“默认 shell”,它不是 bash 或 sh,而是“shutmedown.sh”或类似的东西,它将执行您的关机代码。