
# 制作代理镜像脚本
#### 注意事项：
- 代理镜像脚本分为Linux代理镜像和Windows代理镜像。迁移请制作对应系统的脚本包。
- 用户自行制作代理镜像时，需要自行编写函数。如有疑问，请联系技术支持人员提供帮助。
- Windows 临时代理镜像和Linux 临时代理镜像制作方法是基于迁移团队提供的脚本样例，用户如自行编写，仅做参考。
- 您可以通过华为云Support[下载测试代理镜像制作脚本](https://support.huawei.com/carriersoftwareapply/softwareApp?nid=PSW2001791145&pbi=PBI1-SCV00018351&swlang=zh&supPbi=PBI1-22917898&path=PBI1-253383977/PBI1-23710112/PBI1-23710137/PBI1-22917898)，作为编写代理镜像脚本的参考。
 
#### Windows部分：
1. 创建C:\\smsWindowesAgent文件夹，在该文件夹下创建bin，Python，smsAgent等文件夹。 
   ![](https://support.huaweicloud.com/bestpractice-sms/zh-cn_image_0000001670507089.png "点击放大")
   
   | 名称       | 作用                  | 位置                                  |
   |:---|:---|:---|
   | bin      | 存放开机自启动脚本和peagent目录 | C:\\smsWiondowesAgent\\bin          |
   | python   | 安装python的目录         | C:\\smsWiondowesAgent\\python       |
   | smsAgent | 利用python获取元数据的目录    | C:\\smsWiondowesAgent\\smsAgent     |
   | peagent  | 存放源端传输到目的端的迁移组件     | C:\\smsWiondowesAgent\\bin\\peagent |
      
   
   
2. smsAgent文件夹中包含所有的获取证书的逻辑。 
   sms-agent将ssh公钥和私钥，上传到ECS的metadata中，需要编写脚本，从metadata中获取该数据，元数据中主要分为三个部分。![](https://support.huaweicloud.com/bestpractice-sms/zh-cn_image_0000001622347194.png "点击放大")
   
   | 名称                    | 作用               | 作用于的文件                                                                                     |
   |:---|:---|:---|
   | sms_rsa_part（待弃用）     | ssh公钥（主机认证，身份认证) | C:\\Users\\Administrator\\.ssh\\authorized_keys,C:\\ProgramData\\ssh\\ssh_host_rsa_key.pub |
   | sms_rsa_pri_part（待弃用） | ssh私钥（主机认证，身份认证) | C:\\ProgramData\\ssh\\ssh_host_rsa_key                                                     |
   | sms_rsa_host_old      | 新ssh公钥（主机认证)     | C:\\ProgramData\\ssh\\ssh_host_rsa_key.pub                                                 |
   | sms_rsa_host_old_pri  | 新ssh私钥（主机认证)     | C:\\ProgramData\\ssh\\ssh_host_rsa_key                                                     |
   | sms_rsa_identity      | ssh公钥证书（身份认证）    | C:\\Users\\Administrator.ssh\\authorized_keys                                              |
   | cert_part（待弃用）        | TLS1.2认证公钥       | C:\\smsWindowesAgent\\bin\\peAgent\\config\\cert.pem                                       |
   | prikey_part（待弃用）      | TLS1.2认证私钥       | C:\\smsWindowesAgent\\bin\\peAgent\\config\\prikey.pem                                     |
      
   sms_rsa_part和sms_rsa_pri_part为通信用的ssh公钥和私钥。需要从目的端metadata中获取公钥和私钥，写入作用的文件。
   
   
3. bin目录下包含开机自启动需要包含的脚本，检测是否有peagent.exe程序在运行。 
   'tasklist /nh /fi "imagename eq peAgent.exe'
   - 如果没有则持续开始启动peAgent.exe文件 start cmd /k "C:\\smsWindowesAgent\\bin\\peAgent\\peAgent.exe"
     
   
   - 如果有则结束该脚本
   
   
   注意该部分需要在smsAgent执行结束后，再执行该部分逻辑。
   
   
 
#### Linux部分：
1. 需要创建\~\\smsMetadataAgent目录，目录中包含bin，Python，smsAgent 文件夹。 
   
   | 名称       | 作用                  | 位置                             |
   |:---|:---|:---|
   | bin      | 存放开机自启动脚本和peagent目录 | \~\\smsMetadataAgent\\bin      |
   | smsAgent | 利用python获取元数据的目录    | \~\\smsMetadataAgent\\smsAgent |
      
   
   
2. 同样需要注入公私钥，可以参考Windows部分从metadata中进行获取。 
   
   | 名称                    | 作用               | 作用于的文件                                                  |
   |:---|:---|:---|
   | sms_rsa_part（待弃用）     | ssh公钥（主机认证，身份认证) | root/.ssh/authorized_keys，/etc/ssh/ssh_host_rsa_key.pub |
   | sms_rsa_pri_part（待弃用） | ssh私钥（主机认证，身份认证) | /etc/ssh/ssh_host_rsa_key                               |
   | sms_rsa_host_old      | 新ssh公钥（主机认证)     | /etc/ssh/ssh_host_rsa_key.pub                           |
   | sms_rsa_host_old_pri  | 新ssh私钥（主机认证)     | /etc/ssh/ssh_host_rsa_key                               |
   | sms_rsa_identity      | ssh公钥证书（身份认证）    | /root/.ssh/authorized_keys                              |
   | cert_part（待弃用）        | TLS1.2认证公钥       | /home/config/cert.pem                                   |
   | prikey_part（待弃用）      | TLS1.2认证私钥       | /home/config/prikey.pem                                 |
      
   Linux开机自动运行脚本，将对应值写入对应文件即可。
   
   
   
 
