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
开机自启动:
1
2
Set-Service -Name sshd -StartupType Automatic
Set-Service -Name ssh-agent -StartupType Automatic
安装完成最后在windows防火墙中打开22端口的入站规则。
wakeonlan用户权限控制
如果你是内网中使用可以直接使用管理员账户,但最佳实践是新建一个用户并赋予其最小的权限。
在计算机管理中创建一个wakeonlan用户,然后win+r输入secpol.msc
为本用户配置从远程系统强制关机
的权限:
开机实现
找网卡名和物理地址
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功能在需要时唤醒计算机。
快捷指令配置
新增一个菜单,包含开机、关机、重启选项,分别为每个选项添加通过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的密码