
# 在VS Code中手动连接Notebook
本地IDE环境支持VS Code。通过简单配置，即可用本地IDE远程连接到ModelArts的Notebook开发环境中，调试和运行代码。
本章节介绍基于VS Code环境访问Notebook的方式。
 #### 前提条件
- 已安装VS Code推荐版本并满足约束限制，详情请参见[安装VS Code软件](https://support.huaweicloud.com/devtool-modelarts/devtool-modelarts_0019.html#ZH-CN_TOPIC_0000001402157240__section9990213541)。
- 用户本地PC或服务器的操作系统中建议先安装Python环境，详情请参见[VS Code官方指导](https://code.visualstudio.com/docs/python/python-tutorial#_prerequisites)。
- 已在[DEW管理控制台](https://console.huaweicloud.com/dew/?locale=zh-cn#/dew/)创建账号密钥对或私有密钥对，并将密钥文件并存放在以下目录中。具体操作，请参见[创建密钥对](https://support.huaweicloud.com/usermanual-dew/dew_01_0034.html)。
  - Windows：C:\\Users\\{{user}}
  
  - macOS/Linux：\~
  
  
  如果创建账号密钥对或私有密钥对时，勾选"我同意将密钥对私钥托管"，则密钥可重复下载（在"账号密钥对"或"私有密钥对"页面的操作列单击"导出私钥"）；如果未勾选"我同意将密钥对私钥托管"，则仅创建时会自动下载，后续无法下载，请妥善保存。
  图1我同意将密钥对私钥托管   
  ![](https://support.huaweicloud.com/devtool-modelarts/figure/zh-cn_image_0000002671135159.png "点击放大")
  
  
- Notebook实例已开启SSH远程开发（密钥对选择已创建的账号密钥对或私有密钥对），且该实例状态为"运行中"。
  - 关于如何新建Notebook实例，请参见[创建Notebook实例](https://support.huaweicloud.com/devtool-modelarts/devtool-modelarts_3495.html)。
  
  - 关于如何在已有Notebook实例开启SSH远程开发，请参见[开启SSH远程开发](https://support.huaweicloud.com/devtool-modelarts/modelarts_30_0051.html#ZH-CN_TOPIC_0000001402317016__section671554385910)。
   
- 在Notebook实例详情页面的"基本信息"页签，获取SSH远程开发地址。具体操作，请参见[查看Notebook实例详情](https://support.huaweicloud.com/devtool-modelarts/devtool-modelarts_3495.html#ZH-CN_TOPIC_0000002354438389__section1261438141113)。
  图2Notebook实例详情页面
  ![](https://support.huaweicloud.com/devtool-modelarts/figure/zh-cn_image_0000002643058110.png "点击放大")
  
 
#### 步骤一：添加Remote-SSH插件
在本地的VS Code开发环境中，单击左侧列表的Extensions图标选项![](https://support.huaweicloud.com/devtool-modelarts/figure/zh-cn_image_0000001402157284.png)，在搜索框中输入SSH，单击Remote-SSH插件的install按钮，完成插件安装。
图3添加Remote-SSH插件   
![](https://support.huaweicloud.com/devtool-modelarts/figure/zh-cn_image_0000001452756945.png "点击放大")
#### 步骤二：配置SSH
1. 在本地的VS Code开发环境中，单击左侧Remote Explorer按钮![](https://support.huaweicloud.com/devtool-modelarts/figure/zh-cn_image_0000001452516961.png)，在上方的下拉列表中选择"SSH Target"，再单击页面上的设置按钮![](https://support.huaweicloud.com/devtool-modelarts/figure/zh-cn_image_0000001402157280.png)，此时会出现SSH配置文件路径。
   图4配置SSH Targets页面   
   ![](https://support.huaweicloud.com/devtool-modelarts/figure/zh-cn_image_0000001402317072.png "点击放大") 
2. 单击列表中出现的SSH路径按钮，打开并配置config文件。
   图5配置SSH Config文件   
   ![](https://support.huaweicloud.com/devtool-modelarts/figure/zh-cn_image_0000002623246057.png)
   config文件配置格式示例如下。
   ```
   HOST remote-dev
        hostname <instance connection host>
        port <instance connection port>
        user <instance connection user>
        IdentityFile <instance connection IdentityFile>
        UserKnownHostsFile=/dev/null
        StrictHostKeyChecking no
        ForwardAgent yes
   ```
   - 运行用户为ma-user/ma-group：假设SSH远程开发的地址为ssh -o StrictHostKeyChecking=no -i KeyPair-1234-test.pem ma-user@authoring-ssh-modelarts-\*\*\*\*\*.huawei.com -p 31092，其中authoring-ssh-modelarts-\*\*\*\*\*.huawei.com为hostname，31092为port，ma-user为user。SSH远程开发地址从[前提条件]获取。配置示例如下：
     ```
     HOST remote-dev
          hostname authoring-ssh-modelarts-*****.huawei.com
          port 31092
          user ma-user
          IdentityFile C:\Users\Administrator\KeyPair-1234-test.pem
          UserKnownHostsFile=/dev/null
          StrictHostKeyChecking no
          ForwardAgent yes
     ```
     
   
   - 运行用户为root/root：假设SSH远程开发的地址为ssh -o StrictHostKeyChecking=no -i KeyPair-1234-test.pem root@authoring-ssh-modelarts-\*\*\*\*\*.huawei.com -p 31092，其中authoring-ssh-modelarts-\*\*\*\*\*.huawei.com为hostname，31092为port，root为user。SSH远程开发地址从[前提条件]获取。配置示例如下：
     ```
     HOST remote-dev
          hostname authoring-ssh-modelarts-*****.huawei.com
          port 31092
          user root
          IdentityFile C:\Users\Administrator\KeyPair-1234-test.pem
          UserKnownHostsFile=/dev/null
          StrictHostKeyChecking no
          ForwardAgent yes
     ```
     
   
   
   表1config文件参数说明 
   | 参数                    | 说明                                                                                                                      |
   |:---|:---|
   | HOST                  | 自定义连接配置名称。                                                                                                              |
   | hostname              | 云上开发环境的访问地址，从[前提条件]SSH远程开发地址中获取。      |
   | port                  | 云上开发环境的端口，从[前提条件]SSH远程开发地址中获取。        |
   | user                  | 用于连接云上开发环境的用户名，从[前提条件]SSH远程开发地址中获取。   |
   | IdentityFile          | 存放在本地的云上开发环境私钥文件，即[前提条件]存放在指定目录下的密钥对。 |
   | UserKnownHostsFile    | 指定已知主机文件的路径。                                                                                                            |
   | StrictHostKeyChecking | 是否严格检查云上开发环境的公钥。设置为no表示即使云上开发环境的公钥不匹配，也会继续连接。                                                                           |
   | ForwardAgent          | 支持SSH免密连接第三方远程服务器。                                                                                                      |
      
   
3. 再回到SSH Targets页面，选择远程开发环境名称，单击右侧的Connect to Host in New Window按钮![](https://support.huaweicloud.com/devtool-modelarts/figure/zh-cn_image_0000001402477056.png)。
   图6打开开发环境   
   ![](https://support.huaweicloud.com/devtool-modelarts/figure/zh-cn_image_0000002017805329.png "点击放大")
   在新打开的选择Notebook运行环境页面中，选择"Linux"。
   图7选择Notebook运行环境   
   ![](https://support.huaweicloud.com/devtool-modelarts/figure/zh-cn_image_0000002017805717.png "点击放大")
   图8开发环境远程连接成功   
   ![](https://support.huaweicloud.com/devtool-modelarts/figure/zh-cn_image_0000002017807109.png)
   
   
 
#### 步骤三：安装云端Python插件
在新打开的VS Code界面，单击左侧列表的Extensions选项![](https://support.huaweicloud.com/devtool-modelarts/figure/zh-cn_image_0000001452637305.png)，在搜索框中输入Python，在下拉列表中单击"Install"进行安装。
图9安装云端Python插件   
![](https://support.huaweicloud.com/devtool-modelarts/figure/zh-cn_image_0000001452756941.png "点击放大")
如果安装远端的Python插件不成功时，建议通过离线包的方式安装。具体操作请参见[安装远端插件时不稳定，需尝试多次](https://support.huaweicloud.com/modelarts_faq/modelarts_05_0299.html)。
#### 步骤四：云上环境依赖库安装
在进入容器环境后，可以使用不同的虚拟环境，例如TensorFlow、PyTorch等，但是实际开发中，通常还需要安装其他依赖包，此时可以通过Terminal连接到环境里操作。
1. 在VS Code环境中，执行Ctrl+Shift+P。
2. 搜Python: Select Interpreter，选择对应的Python环境。
3. 单击页面上方的"Terminal \> New Terminal"，此时打开的命令行界面即为远端容器环境命令行。
4. 进入引擎后，通过执行如下命令安装依赖包。
   ```
   pip install spacy
   ```
   
 
