有没有一种简单的方法可以远程关闭计算机,就像局域网唤醒相反的方法?我可以轻松使用一个程序,例如 iOS 应用程序,只需按下一个按钮,它就会启动。我可以反向做同样的事情吗?比如按下一个按钮,它就会关闭?做这样的事情最简单的方法是什么?或者我描述的方式不可能实现?
答案1
这是安全和实施的问题。简单的答案是不,没有这么简单的事情。
Wakeup On LAN
(夜间睡眠)[1]) 是一种在硬件层面实现的协议,旨在最大限度地减少在需要高可用性但不一定 24/7 运行(因此机器可能会关闭)的环境中启动机器所需的工作量。它是在芯片组层面实现的,因此当计算机插入电源时,其网络接口卡 (NIC) 将监听 WoL 数据包。一旦数据包到达,它将触发 ACPI 开机信号,从而启动启动过程。请理解,计算机实际上是打开即使在关闭时,但大多数内部设备(包括风扇和磁盘)的电源将被切断。
安全问题
尽管 WOL 已经(根据维基百科[2]) 安全隐患和可选身份验证机制,它们通常比 更不令人担忧Shutdown On LAN
。让我更好地解释一下。如果数据中心内的恶意应用程序开始向多个服务器发送大量随机 WOL 数据包(考虑客户上传其应用程序的云托管环境),它们可能造成的最严重损害是设施的功耗增加。管理员可以稍后缓解这种情况。
如果确实存在这样的 LAN 关闭协议,则可以通过发起老式的 DoS 攻击来破坏整个数据中心。
实施注意事项
这是相对的。LAN 关机协议可能仍可实现。但是请考虑开机事件可以处理在硬件级别 (ACPI),而关机则不然。您可以简单地为机器供电以使其运行,但您不能简单地切断 OLTP 服务器的电源,否则可能会丢失数据,因此它严格依赖于操作系统实现来触发正确的关机程序。相反,它与操作系统无关。
然而,协议可以实际上向内核发送 ACPI 电源事件,内核可以选择如何适当地处理它。不幸的是(我们再次谈到安全性),ACPI 没有与电源事件相关的身份验证机制。换句话说,ACPI 事件反映了物理按钮的按下,这与任何计算机安全考虑都相去甚远。您不能让硬件通过 ACPI 与操作系统对话和提供身份验证。
结论
实现 LAN 关机的最简单方法是利用操作系统远程访问功能。正如 @NoAngel 所强调的那样,通过 SSH 发出经过身份验证的命令或远程 Powershell [3]我现在正在家里的 Windows Server 2012 Datacenter 上尝试这个
- Linux 主机:
ssh root@remotehost 'init 0'
- Windows 主机:
Stop-Computer -ComputerName remotehost -Credential Administrator -Force
答案2
没有与局域网唤醒相反的东西。只需远程运行 poweroff 即可。
ssh root@host poweroff
答案3
是的,“统一远程”应用程序具有唤醒、睡眠、重启和关机功能。
如果您转发端口,您甚至可以通过 WAN 进行此操作。