
# 制作Windows空壳镜像
#### 镜像准备
准备一台Windows Server 2019 Standard 64bit English镜像（注意是\*\*English版本，不限制Server版本），系统盘40GB。下发ECS时请设置符合规范的密码，主机名请设置为SMS。请使用微软官方的镜像即可。
由于需要安装一些模块，因此需要能访问公网。
#### 软件安装与下载
1. 请参考[制作代理镜像脚本](https://support.huaweicloud.com/bestpractice-sms/sms3_35_0003.html)获取代理镜像脚本smsWindowesAgent。
2. 安装[python3.7.6](https://www.python.org/downloads/release/python-376/)到C:\\smsWindowesAgent\\Python目录下。不限制python版本。
   
   ![](https://support.huaweicloud.com/bestpractice-sms/zh-cn_image_0000001670667057.png "点击放大")
   ![](https://support.huaweicloud.com/bestpractice-sms/zh-cn_image_0000001670627093.png "点击放大")
   ![](https://support.huaweicloud.com/bestpractice-sms/zh-cn_image_0000001670507117.png "点击放大")
   
   
3. 使用where python指令，查看python是否安装在固定文件夹。 
   ![](https://support.huaweicloud.com/bestpractice-sms/zh-cn_image_0000001622347230.png "点击放大")
   
   
 
#### 安装requests，configparser等第三方库
执行如下命令，安装requests，configparser。
```
pip install requests
pip install configparser
```
#### 修改镜像
1. 设置程序开机自启动。 
   1. cmd窗口中输入gpedit，打开组策略。依次打开Computer Configuration下 Windows Settings---\>Scripts (Startup/Shutdown)---\>Startup ![](https://support.huaweicloud.com/bestpractice-sms/zh-cn_image_0000001670387229.png "点击放大")
      ![](https://support.huaweicloud.com/bestpractice-sms/zh-cn_image_0000001622027474.png "点击放大")
      
   
   2. 添加路径 C:\\smsWindowesAgent\\bin\\runPython.bat开机自运行的脚本，请根据需要更换，单击"OK" 。 ![](https://support.huaweicloud.com/bestpractice-sms/zh-cn_image_0000001622187290.png "点击放大")
      ![](https://support.huaweicloud.com/bestpractice-sms/zh-cn_image_0000001622507178.png "点击放大")
      
   
   
   
   
2. 安装openssh。 
   1. 右键单击开始按钮（或按Win+X组合键）弹出系统快捷菜单，选择"Windows PowerShell(管理员)"，在打开的"管理员: Windows PowerShell"窗口中输入并回车运行以下命令：
      ```
      Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
      ```
      
   
   2. 安装完成后重启系统即可生效。继续运行以下命令启动 sshd 和 ssh-agent 服务并设置为自动启动： 启动sshd
      ```
      Start-Service sshd
      ```
      设置sshd开机自启动
      ```
      Set-Service sshd  Automatic
      ```
      启动ssh-agent
      ```
      Start-Service ssh-agent
      ```
      设置ssh-agent开机自动启动
      ```
      Set-Service ssh-agent -StartupType Automatic
      ```
      
   
   3. 在C:\\ProgramData目录下搜索sshd_config文件，增加如下配置： PasswordAuthentication no
      
   
   
   
   
3. 安装OpenStack。 
   因为sms迁移需要注入相关驱动，所以需要将vmtools中的驱动放在迁移镜像中。下载地址：[vmtools下载地址](https://ecs-instance-driver.obs.cn-north-1.myhuaweicloud.com/vmtools-windows.zip)。
   下载后需要解压并提取相关文件到代理镜像指定目录，在./vmtools-windows/upgrade/(Windows7/Windows2012/\~\~\~)/drivers下面存放的是Windows所需的驱动。
   需要把所有驱动拷贝到sms迁移对应的文件夹中。
   以Windows2016_64为例：
   拷贝upgrade\\windows 2016_64\\drivers\\viostor下的所有文件到代理镜像C:\\smsWindowsAgent\\bin\\peAgent\\OpenStack\\windows_device_driver\\Windows2016_64下。
   同样方式拷贝upgrade\\windows 2016_64\\drivers目录下的其他目录下的文件到C:\\smsWindowsAgent\\bin\\peAgent\\OpenStack\\windows_device_driver\\Windows2016_64下。
   拷贝完成后C:\\smsWindowsAgent\\bin\\peAgent\\OpenStack\\windows_device_driver\\Windows2016_64下文件
   Windows2008和Windows2016等相关文件都需要进行拷贝。
   ![](https://support.huaweicloud.com/bestpractice-sms/zh-cn_image_0000001670667093.png "点击放大")
   
   
4. cmd执行如下命令开启8899，8900端口 
   ```
   netsh advfirewall firewall add rule name=peagent dir=in action=allow protocol=TCP localport=8899
   netsh advfirewall firewall add rule name=ntcldst dir=in action=allow protocol=TCP localport=8900
   ```
   
   
5. （可选）非公共镜像，需要安装密码重置插件。 
   1. 下载插件，下载地址：<https://cn-south-1-cloud-reset-pwd.obs.cn-south-1.myhuaweicloud.com/windows/reset_pwd_agent/CloudResetPwdAgent.zip>
   
   2. 依次双击"CloudResetPwdAgent.Windows"或"CloudResetPwdUpdateAgent.Windows"文件夹下的"setup.bat"，安装密码重置插件。
   
   3. 在任务管理器中查找cloudResetPwdAgent服务或cloudResetPwdUpdateAgent服务。
      - 如果有，表示安装成功。
      
      - 如果没有，表示安装失败。
       
   
   
   
   
 
#### 安全加固（可选）：
1. 关闭远程登录。 
   Control Panel --\>System and Security --\>System --\> Allow remote access
   ![](https://support.huaweicloud.com/bestpractice-sms/zh-cn_image_0000001670627117.png "点击放大")
   
   
2. 关闭winrm服务。 
   1. 打开命令提示符或PowerShell窗口，以管理员身份运行。
   
   2. 输入以下命令，停止winrm服务 net stop winrm
      
   
   3. 输入以下命令，禁用Winrm服务： sc config winrm start= disabled
      
   
   
   
   
3. 设置密码登录策略（防止暴力破解）。 
   1. 打开命令提示符或Powershell窗口，以管理员身份运行。
   
   2. 输入gpedit.msc打开组策略。
   
   3. 依次打开Computer Configuration - -\>Windows settings --\>Security Settings --\>Account Policy --\>Account Lockout Policy，可以如下图设置账户锁定策略（登录6次失败，锁定3分钟）。 ![](https://support.huaweicloud.com/bestpractice-sms/zh-cn_image_0000001670507133.png "点击放大")
      
   
   
   
   
4. Windows防火墙关闭监听其他端口。 
   1. 打开cmd窗口，使用netstat -ano命令查看监听的端口。 ![](https://support.huaweicloud.com/bestpractice-sms/zh-cn_image_0000001622347238.png "点击放大")
      
   
   2. 关闭所有的用来监听的动态端口（49152-65535）以及135端口。
      ```
      netsh advfirewall firewall add rule name=Tcp_disable dir=in action=block protocol=TCP localport=135,3389,5985,5986,49152-65535
      ```
      
   
   3. 关闭所用的udp端口。
      ```
      netsh advfirewall firewall add rule name=Tcp_disable dir=in action=block protocol=UDP localport=any
      ```
      
   
   
   
   
 
#### 生成镜像ID
1. 登录华为云控制台，查找IMS服务，进入IMS服务。
2. 选择创建镜像。 
   ![](https://support.huaweicloud.com/bestpractice-sms/zh-cn_image_0000001670387237.png "点击放大")
   
   
3. 选择需要代理镜像的ECS，创建系统盘镜像。 
   ![](https://support.huaweicloud.com/bestpractice-sms/zh-cn_image_0000001622027486.png "点击放大")
   ![](https://support.huaweicloud.com/bestpractice-sms/zh-cn_image_0000001622187298.png "点击放大")
   
   
4. 获取镜像id。 
   ![](https://support.huaweicloud.com/bestpractice-sms/zh-cn_image_0000001670667097.png "点击放大")
   
   
 
