WakeDeck

设置指南

电脑设置指南。唤醒需要完成第 1 节中的设置。通过 SSH 远程关机(第 2 节)为可选功能。

1. Wake-on-LAN(电脑设置)

魔术包可以唤醒已关机或睡眠的电脑,但前提是它的网卡仍然有电并在监听。请使用网线:Wi-Fi 很少能用于唤醒。

Linux

在 BIOS/UEFI 中开启 Wake on LAN(名称各不相同:Wake on LAN、Power On By PCI-E、Resume by PCI-E)。如果有 ErP、EuP 或深度睡眠选项,请将其关闭,因为它会切断网卡的供电。

找到网络接口的名称(例如 enp8s0):

ip -br link

检查 Wake-on 设置,应显示 g:

sudo ethtool <iface> | grep Wake-on

将其开启(重启后会重置):

sudo ethtool -s <iface> wol g

若要在 NetworkManager 下重启后仍保持有效(请替换连接名称,参见 nmcli connection show):

sudo nmcli connection modify "<connection>" 802-3-ethernet.wake-on-lan magic

Windows

在 BIOS/UEFI 中开启 Wake on LAN(名称各不相同:Wake on LAN、Power On By PCI-E、Resume by PCI-E)。如果有 ErP、EuP 或深度睡眠选项,请将其关闭,因为它会切断网卡的供电。

打开设备管理器,双击你的网络适配器,进入“电源管理”选项卡:勾选“允许此设备唤醒计算机”和“只允许幻数据包唤醒计算机”。

在同一窗口的“高级”选项卡中:将“Wake on Magic Packet”设为“已启用”(如果列出了该项)。

关闭快速启动:控制面板 → 电源选项 → 选择电源按钮的功能 → 更改当前不可用的设置 → 取消勾选“启用快速启动”。开启快速启动时,已关机的电脑常常会忽略魔术包。

macOS

打开“系统设置” → “电池”(MacBook)或“节能”(台式 Mac)→ “选项”,开启“网络唤醒”。使用有线网络唤醒效果最好:MacBook 请用 USB-C 或雷雳以太网适配器,并保持接通电源。通过 Wi-Fi 睡眠的 Mac 常常会忽略魔术包。

使用 Wi-Fi 时,还要为你的网络关闭“私有 Wi-Fi 地址”(系统设置 → Wi-Fi → 详细信息),否则 Mac 会使用另一个 MAC 地址。下面列表中的“Ethernet Address”就是各端口的 MAC 地址。

在 WakeDeck 中,用电脑的 MAC 地址添加设备。查找方法:

Linux

ip -br link

Windows

ipconfig /all

macOS

networksetup -listallhardwareports

广播地址:你所在网络的最后一个地址,例如 192.168.1.x 网络对应 192.168.1.255(默认的 255.255.255.255 在同一网络中也可用)。端口:9。

2. 通过 SSH 远程关机(可选)

请把 PASTE_KEY_LINE_FROM_APP 替换为 WakeDeck 的 SSH 密钥界面中显示的密钥行。

应用使用自己的密钥登录,绝不使用密码。电脑需要运行 SSH 服务器,并且必须添加应用的公钥。下面的命令已经包含了你的密钥。

Linux

安装并启动 SSH 服务器(以 Debian/Ubuntu 为例):

sudo apt install openssh-server && sudo systemctl enable --now ssh

在 Fedora、Arch 或 SteamOS 上,服务名称是 sshd:

sudo systemctl enable --now sshd

把应用的密钥添加到你的用户。这一行会把密钥限制为只能执行关机命令:

mkdir -p ~/.ssh && chmod 700 ~/.ssh && echo 'PASTE_KEY_LINE_FROM_APP' >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys

允许无需密码关机。运行下面的命令,然后添加其下方的那一行(替换 youruser,并用 which shutdown 确认路径):

sudo visudo -f /etc/sudoers.d/wakedeck
youruser ALL=(ALL) NOPASSWD: /usr/bin/shutdown

Windows

以管理员身份打开 PowerShell,安装并启动 OpenSSH 服务器:

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0; Start-Service sshd; Set-Service -Name sshd -StartupType Automatic

管理员账户:添加密钥并收紧文件权限(否则 SSH 会忽略该文件):

Add-Content -Force -Path "$env:ProgramData\ssh\administrators_authorized_keys" -Value 'PASTE_KEY_LINE_FROM_APP'
icacls.exe "$env:ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"

普通账户则:把密钥行放到 C:\Users\NAME\.ssh\authorized_keys。

如果仍被拒绝:请检查防火墙是否允许 TCP 端口 22(OpenSSH 功能通常会自动添加规则),以及该账户不是 Microsoft Entra ID 账户,此类账户无法使用密钥。

macOS

开启 SSH 服务器:系统设置 → 通用 → 共享 → 远程登录,并允许你的用户。

把应用的密钥添加到你的用户。这一行会把密钥限制为只能执行关机命令:

mkdir -p ~/.ssh && chmod 700 ~/.ssh && echo 'PASTE_KEY_LINE_FROM_APP' >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys

允许无需密码关机。运行下面的命令,然后添加其下方的那一行(替换 youruser):

sudo visudo -f /etc/sudoers.d/wakedeck
youruser ALL=(ALL) NOPASSWD: /sbin/shutdown

在设备的编辑界面中填写主机(IP 或名称)、SSH 用户(你在电脑上的账户名)和端口(22)。点按“立即关机”。第一次连接时,请确认显示的指纹与电脑的一致,然后点按“信任”。电脑的指纹:

Linux

ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub

Windows

ssh-keygen -lf $env:ProgramData\ssh\ssh_host_ecdsa_key.pub

macOS

ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub

“电脑拒绝了该 SSH 密钥”:密钥或用户名有误。“无法连接”:电脑已关机,或主机、端口、防火墙有误。“电脑返回了错误”:在 Linux 或 macOS 上通常是 sudoers 规则的问题。“电脑的 SSH 密钥已更改”:电脑被重新安装,或其 SSH 密钥被重新生成;只有在你预料到这一点时才信任新密钥。

3. 离家在外(VPN)

在家庭网络之外,你首先需要一种进入家庭网络的方式,例如 WireGuard 或 Tailscale VPN。魔术包是广播,而许多 VPN 不会转发广播。请在设备中填写你网络的广播地址(例如 192.168.1.255)。如果远程唤醒仍然不起作用,通常的解决办法是在家里放一台常开的小设备,由它代你发送数据包(支持 Wake-on-LAN 的路由器,或树莓派)。只要电脑的地址可以访问,通过 SSH 远程关机就可以在 VPN 下使用。

远程问题:“没有网络或 VPN 连接”表示手机没有通往该地址的路由,请先连接 VPN。“找不到广播地址”表示设备中的名称或地址无法解析。VPN 也可能接收了数据包却从未送达:应用无法得知,因为魔术包没有回复。请确认电脑是否开机,并查看它在列表中的状态。