我怎样才能通过 ssh 使用本地主机关闭我网络中的远程主机?

我怎样才能通过 ssh 使用本地主机关闭我网络中的远程主机?

问题很简单。
我需要使用什么脚本才能通过 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。为此,您必须 (如这里所述):

  1. 安装ssh

    sudo apt-get install ssh
    
  2. 通过在您的中输入以下命令ssh-key-gen来创建公钥和私钥:local-hostlocalhost

    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
    
  3. 将公钥复制到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

  4. remote-host无需输入密码即可登录:

    ssh remote-host
    yourusername@remote-host:~$
    

    remote-host无需密码即可访问。成功!

现在你必须能够sudo shutdown -P 0无需密码即可执行。您可以通过修改/etc/sudoers来实现。这样,用户无需输入密码即可执行命令。remote-hostvisudoyourusernameshutdown

  1. 登录到remote-host

    ssh remote.host
    
  2. 跑步:

    sudo visudo
    

    通过运行visudo,您可以/etc/sudoers以安全的方式进行编辑。

  3. 将这一行添加到文件:

    yourusername ALL = NOPASSWD: /sbin/shutdown
    
  4. 完成后,返回到您的local-host,创建一个新的空文件并粘贴此行,修改的remote-host名称:

    ssh remote.host sudo shutdown -P 0
    
  5. 保存并关闭文件,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”或类似的东西,它将执行您的关机代码。

相关内容