个人开发环境连接VS Code进行本地开发

本方案面向希望提升开发效率的DataWorks用户,通过SSH安全连接,将本地Visual Studio Code编辑器与云端个人开发环境打通,让开发者在享受本地工具体验的同时,无缝利用云端计算与数据能力,实现编码、调试效率的提升。

流程概览

  1. 环境准备:在本地电脑上生成 SSH 密钥。

  2. 配置环境:在DataWorks为个人开发环境配置 SSH 公钥和访问方式。

  3. 安装服务:在个人开发环境安装并启动 SSH 服务。

  4. 远程连接:通过 Visual Studio Code 连接到个人开发环境。

步骤一:生成 SSH 密钥对

在进行任何连接配置之前,您首先需要在您的本地开发机(即您希望从中发起连接的电脑)上生成 SSH 密钥对。

macOS

  1. 执行生成命令:打开“终端” (Terminal) 应用,在终端中输入 ssh-keygen 并回车。

    ssh-keygen
  2. 使用默认设置:系统会依次询问保存路径和密码。为了保证后续工具的无缝连接,请连续按三次 Enter 键,接受所有默认选项。

    执行后,系统会在默认路径下生成两个文件:

    • id_rsa :私钥,请妥善保管,切勿泄露。

    • id_rsa.pub :公钥,将用于配置到 DataWorks 环境中。

  3. 复制公钥:密钥默认保存在 /Users/<你的用户名>/.ssh/ 目录下。最快捷的复制方式是在终端中执行以下命令,它会自动将公钥内容复制到剪贴板:

    pbcopy < ~/.ssh/id_rsa.pub

Window

  1. 执行生成命令:在开始菜单中搜索并打开 PowerShell或者使用 Git Bash,在终端中输入 ssh-keygen 并回车。

    ssh-keygen
  2. 使用默认设置:系统会依次询问保存路径和密码。为了保证后续工具(如VS Code)的无缝连接,请连续按三次 Enter 键,接受所有默认选项(默认路径且无密码)。

    执行后,系统会在默认路径下生成两个文件:

    • id_rsa :私钥,请妥善保管,切勿泄露。

    • id_rsa.pub :公钥,将用于配置到 DataWorks 环境中。

  3. 复制公钥:密钥默认保存在 C:\Users\<你的用户名>\.ssh\ 目录下。请用记事本等文本编辑器打开公钥文件 id_rsa.pub,并复制其全部内容。

Linux(不推荐)

重要

Visual Studio Code需要图形化界面,建议使用图形化系统。

  1. 执行生成命令:打开“终端” (Terminal) 应用,在终端中输入 ssh-keygen 并回车。

    ssh-keygen
  2. 使用默认设置:系统会依次询问保存路径和密码。为了保证后续工具的无缝连接,请连续按三次 Enter 键,接受所有默认选项。

    执行后,系统会在默认路径下生成两个文件:

    • id_rsa :私钥,请妥善保管,切勿泄露。

    • id_rsa.pub :公钥,将用于配置到 DataWorks 环境中。

  3. 复制公钥

    • root 用户的密钥保存在 /root/.ssh/

    • 普通用户的密钥保存在 /home/<你的用户名>/.ssh/

    • 在终端中执行以下命令来显示公钥内容,然后手动复制所有输出文本:

      cat ~/.ssh/id_rsa.pub

步骤二:配置个人开发环境

  1. 进入DataWorks工作空间列表页,在顶部切换至目标地域,找到已创建的工作空间,单击操作列的快速进入 > Data Studio,进入Data Studio。

  2. 进入个人开发环境。

    单击顶部导航栏个人开发环境·请选择旁边的image图标,单击进入您所创建的个人开发环境。

  3. 在弹出的“个人开发环境-实例配置”弹窗中,根据您的需求选择不同的配置方式。

    完整配置说明,请参见创建个人开发环境实例

场景A:通过公网访问 (灵活,但有额外费用)

适用于您在任何连通公网的网络环境下直接连接。

  1. 在配置界面中,进行如下设置:

    • 启用SSH打开此开关。

    • SSH公钥:将【步骤一】中复制的公钥内容粘贴到此处。

    • SSH访问方式:同时勾选VPC内登录公网登录

    • NAT网关:选择一个已有的 NAT 网关,或根据页面提示新建。

    • 弹性公网IP:选择一个已有的 EIP,或根据页面提示新建。

      重要

      若在网络设置中已配置专有网络,则配置该VPCNAT网关。否则,配置资源组默认VPCNAT网关。

  2. 单击提交变更,等待配置生效。

    重要

    计费提醒:用于公网访问的 NAT 网关弹性公网 IP (EIP) 是独立计费的云产品。即使您的开发环境实例处于“停止”状态,这两个网络产品仍会持续计费。 如果不再需要,请务必前往阿里云控制台手动删除,以免产生不必要的费用。

场景B:通过 VPC 内部网络访问 (安全、无额外网络费用)

适用于以下两种情况:

  • 通过 VPN 或专线 已将本地网络与阿里云 VPC 打通。

  • 同一 VPC 内的另一台 ECS 上连接。

  1. 在配置界面中,进行如下设置:

    • 启用SSH打开此开关。

    • SSH公钥:将【步骤一】中复制的公钥内容粘贴到此处。

    • NAT网关:无需配置。

    • 弹性公网IP:无需配置。

  2. 单击提交变更,等待配置生效。

步骤三:安装 SSH 服务

  1. 进入新版数据开发页面,进入已配置的个人开发环境。

  2. 在底部的 Terminal 中,执行以下命令:

    image

    # 更新软件列表并安装 SSH Server
    sudo apt-get update
    sudo apt-get install openssh-server -y
    
    # 启动 SSH 服务
    sudo service ssh start
    
    # (可选) 检查 SSH 服务状态,看到 "active (running)" 表示成功
    sudo service ssh status
  3. 如果您需要在本地连接时,需把个人开发环境的环境变量传递出来,继续执行如下命令:

    sed -i 's/^#\?PermitUserEnvironment.*$/PermitUserEnvironment yes/' /etc/ssh/sshd_config
    cat /proc/1/environ | tr '\0' '\n' > ~/.ssh/environment
    service ssh restart

步骤四:使用 Visual Studio Code 连接开发环境

  1. 获取连接命令

    单击顶部导航栏个人开发环境·请选择旁边的image图标,单击管理开发环境。在目标实例后,查看访问配置

    image

    • 配置公网:复制“公网访问方式”的命令。

    • 仅配置VPC:复制“VPC访问方式”的命令。

      image

  2. 安装 Visual Studio Code 插件

    重要

    仅适用于图形系统(Window、Mac等),若使用无界面的Linux系统。可通过终端连接。

    在 Visual Studio Code 的扩展商店中,搜索并安装 Remote - SSH 插件。

    image

  3. 添加并连接主机

    • 点击 Visual Studio Code 左下角的远程连接图标image

    • 在弹出的菜单中选择 Connect to Host... > Add New SSH Host...

    • 将第1步中复制的完整 SSH 命令粘贴到输入框中,然后按回车键。

      重要

      如果私钥不在默认路径上,需要指定私钥的位置。同时添加ssh -i /your/path/rsa root@xx.xx.xx.xx -p 1024

    • Visual Studio Code 会提示您选择一个 SSH 配置文件进行保存,选择默认的即可。

    • 此时右下角会弹出提示,点击 Connect

    • 一个新的 Visual Studio Code 窗口会打开,并开始连接。连接成功后,将弹出一个新的Visual Studio Code窗口,左下角显示 SSH 连接的主机地址。

  4. 打开工作目录

    连接成功后,Visual Studio Code 默认可能处于 /root 目录下。您的代码文件通常位于 /mnt/workspace

    • 点击左侧资源管理器的“打开文件夹”按钮。

    • 在弹出的路径中输入 /mnt/workspace,然后点击“确定”。

    • 现在,您可以在 Visual Studio Code 中看到并编辑您在 DataWorks 环境中在个人目录 > workspace中的所有文件。

      image

附录:本地开发和Data Studio开发差异

EMR Serverless Spark开发

使用本地Visual Studio Code开发时,相对于使用Data Studio,需要额外声明 --project {EMR Serverless Spark的集群id} --endpoint {EMR Serverless Sparkendpoint}

image

Maxframe开发

使用本地Visual Studio Code开发时,相对于使用Data Studio,需要额外添加参数 --project {MaxComputeproject名称} --endpont {MaxComputeendpoint}

image