
# 如何开启WinRM服务？
WinRM（Windows 远程管理，Windows Remote Management）是WEB服务管理在微软的Microsoft Windows中的实现，它允许处于一个共同网络内的Microsoft Windows计算机彼此之间互相访问和交换信息。在一台机器启用WinRM后，另一台机器就能通过Windows PowerShell对开启WinRM的机器进行远程管理。
![](https://support.huaweicloud.com/vss_faq/public_sys-resources/notice_3.0-zh-cn.png)
目前对Windows系统的认证扫描支持基于HTTPS的WinRM（5986端口）和基于HTTP的WinRM（5985端口），建议用户配置使用更安全的基于HTTPS的WinRM。
如果仅为了做漏洞扫描而修改WinRM配置的，建议在扫描完成后，恢复系统原先的配置。
#### 开启基于HTTPS的WinRM服务
基于HTTPS的WinRM只支持Windows Server 2016及以上版本。
1. 以Windows系统管理员身份运行PowerShell。 
   ![](https://support.huaweicloud.com/vss_faq/zh-cn_image_0000002092807557.png)
   
   
2. 执行如下命令查看基于HTTPS的WinRM是否开启。
   
   ```
   winrm e winrm/config/listener
   ```
   ![](https://support.huaweicloud.com/vss_faq/zh-cn_image_0000002056570352.png)
   输出结果有HTTPS的"Listener"且"Enabled"为"true"，则为开启状态。如果未开启，则请直接执行[4]。
   
   
3. 校验WinRM是否使用用户名密码验证及使用的证书是否正确。
   
   1. 执行如下命令查看是否使用用户名密码验证。
      1. 执行如下命令查看Auth信息。
         ```
         winrm get winrm/config/service/auth
         ```
         ![](https://support.huaweicloud.com/vss_faq/zh-cn_image_0000002056570356.png)
         
      
      2. 执行如下命令修改"Basic"的值为"true"。 当返回值中"Basic"为"true"时，无需执行该步骤。
         ```
         winrm set winrm/config/service/auth '@{Basic="true"}'
         ```
         
       
   
   2. 执行如下命令校验WinRM使用的证书是否正确。
      ```
      ls Cert:\LocalMachine\My\
      ```
      ![](https://support.huaweicloud.com/vss_faq/zh-cn_image_0000002092807533.png)
      - 如果有输出，且"Thumbprint"与[2]的Thumbprint对应，"CN"名与主机名对应，则基于HTTPS的WinRM已配置完成。
      
      - 如果不满足上面任意一条则请直接执行[5]替换HTTPS WinRM使用的证书。
       
   
   
   
   
4. 以Windows系统管理员身份运行cmd，并执行如下命令创建基于HTTPS的WinRM服务。
   
   该步中需要使用CN与主机名相同的证书，如果不同，请先执行[5.a]生成证书。
   ```
   winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Port="5986" ;Hostname="" ;CertificateThumbprint=""}
   ```
   ![](https://support.huaweicloud.com/vss_faq/zh-cn_image_0000002056728688.png)
   执行成功结果如上图。其中，"Port"为监听端口（建议不做更改），"CertificateThumbprint"为证书的Thumbprint，"Hostname"为主机名，可通过在PowerShell中输入如下命令获取：
   ```
   hostname
   ```
   ![](https://support.huaweicloud.com/vss_faq/zh-cn_image_0000002092807549.png)
   可再通过[2]～[3]验证HTTPS WinRM配置是否正确。
   
   
5. 替换HTTPS WinRM使用证书。
   
   1. 生成CN与主机名相同的自签名证书。
      在PowerShell中输入如下命令创建证书：
      ```
      $params = @{
          Type = 'SSLServerAuthentication'
          Subject = 'CN='
          TextExtension = @(
              '2.5.29.37={text}1.3.6.1.5.5.7.3.1' )
          KeyAlgorithm = 'RSA'
          KeyLength = 2048
          CertStoreLocation = 'Cert:\LocalMachine\My\'
      }
      New-SelfSignedCertificate @params
      ```
      其中，除"Subject"的值外，其他值请和上述命令保持一致，"Subject"值的格式为"CN=hostname"，hostname的获取见[4]。
      ![](https://support.huaweicloud.com/vss_faq/zh-cn_image_0000002092807537.png)
      生成成功会输出证书的Subject和Thumbprint。
      
   
   2. 执行如下命令替换证书。
      ```
      Set-WSManInstance -ResourceURI winrm/config/Listener -SelectorSet @{Address="*"; Transport="HTTPS"} -ValueSet @{CertificateThumbprint=""}
      ```
      ![](https://support.huaweicloud.com/vss_faq/zh-cn_image_0000002092807525.png)
      其中，"CertificateThumbprint"为证书的Thumbprint，可再通过[2]～[3]验证HTTPS WinRM配置是否正确。
      
   
   
   
   
 
#### 开启基于HTTP的WinRM服务
1. 以Windows系统管理员身份运行PowerShell。 
   ![](https://support.huaweicloud.com/vss_faq/zh-cn_image_0000002056570328.png)
   
   
2. 执行如下命令查看基于HTTP的WinRM是否开启。 
   ```
   winrm enumerate winrm/config/listener
   ```
   ![](https://support.huaweicloud.com/vss_faq/zh-cn_image_0000002056728696.png)
   - 如果存在报错信息，则表示WinRM服务未开启，请执行[3]。
   
   - 如果不存在报错信息，则表示WinRM服务已开启，请执行[4]。
   
   
   
   
3. 执行如下命令开启WinRM，选择y完成设置。
   
   ```
   winrm quickconfig
   ```
   ![](https://support.huaweicloud.com/vss_faq/zh-cn_image_0000002056570344.png)
   
   
4. 配置Auth。
   
   1. 执行如下命令查看Auth信息。
      ```
      winrm get winrm/config/service/auth
      ```
      ![](https://support.huaweicloud.com/vss_faq/zh-cn_image_0000002056570332.png)
      
   
   2. 执行如下命令修改"Basic"的值为"true"。 当返回值中"Basic"为"true"时，无需执行该步骤。
      ```
      winrm set winrm/config/service/auth '@{Basic="true"}'
      ```
      
   
   
   
   
5. 配置加密方式为允许非加密。 
   1. 执行如下命令查看Service信息。
      ```
      winrm get winrm/config/service
      ```
      ![](https://support.huaweicloud.com/vss_faq/zh-cn_image_0000002092729013.png)
      当返回值中"AllowUnencrypted"为"false"时，请执行[5.b]。
      
   
   2. 执行如下命令修改"AllowUnencrypted"的值为"true"。
      ```
      winrm set winrm/config/service '@{AllowUnencrypted="true"}'
      ```
      
   
   
   
   
6. 执行如下命令检查基于HTTP的WinRM服务是否开启成功。 
   ```
   winrm e winrm/config/listener
   ```
   ![](https://support.huaweicloud.com/vss_faq/zh-cn_image_0000002056728680.png)
   查看返回值，输出结果有HTTP的"Listener"且"Enabled"为"true"，则为开启状态。
   
   
 
#### 关闭WinRM服务
1. 以管理员身份运行Powershell并执行如下命令。 
   ```
   winrm set winrm/config/service/auth '@{Basic="false"}'
   winrm set winrm/config/service '@{AllowUnencrypted="false"}'
   ```
   
   
2. 执行如下命令关闭WinRM服务。 
   ```
   net stop winrm
   ```
   
   
 
