文章

windows远程开关机

windows远程开关机

关机实现

关机使用windows中的openssh,这样就可以在其他设备使用ssh执行脚本了。

windows下安装openssh

可以直接在windows搜索可选功能,然后添加openssh即可。如果安装不上,可以在GitHub下载OpenSSH-Win64.zip安装包手动安装。解压后管理员权限打开powershell:

1
cd D:\OpenSSH-Win64
1
Set-ExecutionPolicy Unrestricted -Scope Process
1
Get-ExecutionPolicy

需要出现Unrestricted证明允许执行脚本安装软件。

1
.\install-sshd.ps1

image-20241110105316884

开机自启动:

1
2
Set-Service -Name sshd -StartupType Automatic
Set-Service -Name ssh-agent -StartupType Automatic

安装完成最后在windows防火墙中打开22端口的入站规则。

wakeonlan用户权限控制

如果你是内网中使用可以直接使用管理员账户,但最佳实践是新建一个用户并赋予其最小的权限。

在计算机管理中创建一个wakeonlan用户,然后win+r输入secpol.msc为本用户配置从远程系统强制关机的权限:

image-20241110123040210

开机实现

找网卡名和物理地址

windows下网卡mac物理地址打开插有网线的网卡,找到mac物理地址XX-XX-XX-XX-XX-XX

Linux下使用ifconfig查看插着网线的网卡名ens192

快捷指令命令:/usr/sbin/ether-wake -i ens192 XX:XX:XX:XX:XX:XX

wakeonlan用户权限控制

如果你是内网中使用可以直接使用root账户,但最佳实践是新建一个用户并赋予其最小的权限。

创建用户

1
useradd wakeonlan
1
passwd wakeonlan

设置setuid

如果你不是用root用户的话,执行快捷指令的时候会发现出现you must run as root,这时候我们需要给ether-wake命令设置setuid位,这样任何用户执行该命令时都会以文件所有者(root)的权限运行。

1
sudo chmod u+s /usr/sbin/ether-wake

为文件夹授权

1
sudo chown -R wakeonlan:wakeonlan /home/wakeonlan
1
sudo chmod -R 755 /home/wakeonlan

关闭快速启动

快速启动功能会使计算机在关机时进入S4休眠状态,而正常的关机则是将计算机置于S5完全关机状态。由于Wake-on-LAN(WOL)功能仅在S5状态下才被支持,因此为了确保WOL功能能够正常工作,需要关闭“快速启动”功能。这样一来,计算机在关机时会进入S5状态,从而允许WOL功能在需要时唤醒计算机。

image-20241230091413432

快捷指令配置

新增一个菜单,包含开机、关机、重启选项,分别为每个选项添加通过ssh执行脚本

开机

命令:/usr/sbin/ether-wake -i ens192 XX:XX:XX:XX:XX:XX

主机:局域网下Linux设备ip

端口:22

用户:root或wakeonlan,取决于你的设置

认证:如果是密码就是root或wakeonlan的密码,如果是密钥的话把生成的密钥添加到Linux主机对应用户的.ssh文件夹下的authorized_keys中,root用户的文件夹是~/.ssh/authorized_keys ,wakeonlan用户是/home/wakeonlan/.ssh/authorized_keys

关机

命令:shutdown -s -t 0

主机:windows主机的ip

端口:22

用户:管理员账户或wakeonlan

密码:管理员账户或wakeonlan的密码

重启

命令:shutdown -r -t 0

主机:windows主机的ip

端口:22

用户:管理员账户或wakeonlan

密码:管理员账户或wakeonlan的密码

本文由作者按照 CC BY 4.0 进行授权