一、基本环境
远程主机(被控主机):192.168.6.211 Windosw 11 Pro
本地主机(控制主机):192.168.6.186 Windows 11 Pro
二、远程主机配置
1、以Windows系统管理员身份运行PowerShell。
2、执行如下命令查看基于HTTP的WinRM是否开启。
winrm enumerate winrm/config/listener
如果存在报错信息,则表示WinRM服务未开启,请执行3。
如果不存在报错信息,则表示WinRM服务已开启,请执行4。
3、执行 winrm quickconfig 执行快速配置以开启WinRM服务。
4、配置认证方式
winrm get winrm/config/service/auth
如果Basic = false,则将其设置为true。设置方法:winrm set winrm/config/service/auth '@{Basic="true"}'
图1.配置认证方式5、配置加密方式为允许非加密传输。
先查看配置是否正确:winrm get winrm/config/service
如果 AllowUnencrypted = false,则需要将其参数改为true,修改方法:winrm set winrm/config/service '@{AllowUnencrypted="true"}'
图2.配置加密方式6、验证
执行 winrm e winrm/config/listener ,查看返回值,输出结果有HTTP的“Listener”且“Enabled”为“true”,则为开启状态。
图3.验证三、客户端配置
在本地主机上,启动Powershell,例如对远程主机通过WinRM开启交互式命令窗口cmd.exe
winrs -r:http://192.168.6.211:5985 -u:远程主机用户名 -p:远程主机用户密码 cmd
如果报错:Winrs error:WinRM 客户端无法处理该请求。如图所示。
图4.客户端报错说明没有将远程主机配置到客户端的信任主机列表,只有在客户端的信任主机列表中,才允许进行非加密通信
在本地主机的Powershell窗口中执行 Set-Item WSMan:\localhost\Client\TrustedHosts -Value '192.168.6.211' -Concatenate
这样就将192.168.6.211这台远程主机加入到客户端的信任列表中了。
另外一种设置方法:
在本地主机的Powershell窗口中执行 winrm set winrm/config/Client '@{TrustedHost="*"}'
这样就视任意目标都为可信主机了,当然也可以把*换成IP地址。
再次执行,成功!
四、特殊注意
1、远程登录用户限制
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
LocalAccountTokenFilterPolicy = 0,则只允许系统默认的administrator登录,即SID中RID=500的用户。如果需要允许其他存在于administrators组成员登录,需要将这个值改为1。
图5.远程登录用户限制2、远程主机(被控主机)开启WinRM HTTP模式,网络区域位置需要选择为专有,但一定不可以是公共区域。
修改网络区域位置方法
Powershell管理员登录,输入 Get-NetConnectionProfile 查询网络区域位置
图7.网络区域位置确保你连接使用的网卡所在区域为Private,而不是Public。
修改方法:Set-NetConnectionProfile -Name "NetworkName" -NetworkCategory Private
网友评论