ProxyClient方式

更新时间: 2023-11-22 11:38:11

如果您希望通过本地工具(例如VS Code(Visual Studio Code)或Terminal)连接DSW实例进行机器学习开发,可以使用DSW提供的ProxyClient客户端代理工具。该工具允许您通过SSH远程连接DSW实例,实现本地与DSW实例的连接。

前提条件

在开始执行操作前,请确认您已完成以下准备工作。

  • 已创建DSW实例,具体操作,请参见创建及管理DSW实例

  • 已获取阿里云账户的AccessKey ID和AccessKey Secret,具体操作,请参见创建AccessKey

  • 如果您使用RAM用户或RAM角色通过SSH远程连接DSW实例,请为RAM用户或RAM角色授予访问DSW实例的操作权限,详情请参见云产品依赖与授权:DSW

注意事项

  • 如果您的DSW实例启动时间在2022年8月10日12:00(UTC + 8)之前,请停止实例后重新启动实例,来激活RemoteSSH连接功能。

    说明

    您可以前往控制台的交互式建模(DSW)页面,查看目标实例服务时长列下的服务时间,来判断是否需要重启实例。具体操作,请参见管理实例

  • 按照文档中的操作步骤完成配置后,如果您重启了DSW实例,在重新远程连接DSW实例之前,需要完成以下操作。

    • 对于使用公共资源组创建的DSW实例,您需要在DSW的Terminal中执行sudo service ssh start命令,以启动SSH服务。

    • 对于使用专有资源组创建的DSW实例,如果未挂载数据集,您需要按照文档中的操作步骤重新配置服务端公钥并启用免密登录,或者配置账号密码登录。如果已经挂载了数据集,则需要在DSW的Terminal中执行sudo service ssh start命令,以启动SSH服务。

步骤一:安装SSH Server

如果您的DSW实例使用的是预置镜像或基于预置镜像生成的自定义镜像,则已默认安装了SSH Server,您可以跳过该步骤。否则需要按照以下步骤来手动安装SSH Server。

  1. 进入DSW开发环境。

    1. 登录PAI控制台

    2. 在左侧导航栏单击工作空间列表,在工作空间列表页面中单击待操作的工作空间名称,进入对应工作空间内。

    3. 在页面左上方,选择使用服务的地域。

    4. 在左侧导航栏,选择模型开发与训练 > 交互式建模(DSW)

    5. 可选:交互式建模(DSW)页面的搜索框,输入实例名称或关键字,搜索实例。

    6. 单击需要打开的实例操作列下的打开

  2. 在DSW的Terminal中,执行如下命令。

    sudo apt-get update
    sudo apt-get install openssh-server
    sudo service ssh start
    说明

    如果执行命令失败,返回结果为sudo:未找到命令,您可以尝试执行apt-get install sudo 命令后,再次执行上述命令即可。

步骤二:下载和安装DSW ProxyClient

  1. 下载DSW ProxyClient客户端工具,并保存到当前用户主目录下。

    不同的操作系统,需要保存的目录如下:

    • Windows操作系统:保存在用户个人文件夹目录,例如C:\Users\<username>目录或C:\用户\<username>目录。请根据您的实际路径进行选择。

    • Linux操作系统:root用户保存在/root目录;普通用户保存在 /home/<username>目录。

    • Mac操作系统:保存在/Users/<username>目录。

    其中:<username>需要替换为实际的目录。

    各版本的客户端下载地址如下:

  2. 在命令行中,将下载的客户端文件修改为可执行文件。如果您下载的Windows X86 64版本,则可以跳过该步骤。

    chmod 755 <proxyclient>

    其中<proxyclient>表示下载的客户端文件名,需要根据实际情况修改。

  3. 生成配置文件。

    1. 输入配置命令。

      # Mac,Linux。
      ./proxyclient config
      # Windows。
       proxyclient.exe config
      重要

      Mac首次运行./proxyclient命令时,可能会提示:无法打开”proxyclient“,因为无法验证开发者。请打开Mac OS的系统偏好设置 > 安全性与隐私,设置允许proxyclient运行。

    2. 根据提示设置配置文件路径。

      请输入配置文件名,文件名可以带路径。

      说明
      • 建议直接按回车键(Enter)使用默认路径和配置文件名称。默认为:~/.proxyclientconfig

      • 您也可以指定其他路径和配置文件名称。以Windows X86 64版本为例:C:/Users/<username>/xxx/.proxyclientconfig

      • 如果设置为其他路径,请在后续步骤四中执行./proxyclient add命令时,指定-c--config-file为该路径。

    3. 根据提示分别设置RegionId、AccessKey ID、AccessKey Secret和STSToken参数。

      参数说明如下。

      参数

      说明

      RegionId

      地域ID,例如:华东2(上海)为cn-shanghai。更多其他地域ID,详情请参见地域和可用区列表

      重要

      此处配置的地域ID,需要与DSW实例所在地域一致。

      AccessKey ID

      填写账号的AccessKey,关于如何获取阿里云账户的AccessKey ID和AccessKey Secret,详情请参见创建AccessKey

      AccessKey Secret

      STSToken

      当您使用阿里云账号或RAM用户登录时,不需要配置该参数,置空即可;当您使用RAM角色登录时,需要使用临时身份凭证,需要配置该参数。关于STSToken的生成方式,请参见获取STS临时Token

      重要

      请确保STS Token在有效期内。

步骤三:配置SSH认证方式

您可以使用SSH密钥对或账号密码的认证方式连接DSW实例。认证方式配置完成后,您可以单击DSW实例操作列下的保存镜像,将实例保存为镜像,添加的公钥或密码会持久化到实例镜像中,实例重新启动后仍有效。

配置实例免密登录(推荐)

  1. 生成密钥对。

    1. 在本地命令行中,运行以下命令,生成免密登录所需的公钥和私钥文件,默认创建的密钥类型为RSA。

      ssh-keygen
    2. 配置密钥对保存的文件。

      • (推荐)不指定文件名,直接按回车键(Enter)。默认生成的密钥对文件为~/.ssh/id_rsa(私钥)和~/.ssh/id_rsa.pub (公钥)。

      • (可选)指定自定义密钥对文件名,例如:example_id_rsa。

        说明

        如果指定了自定义密钥对文件名,您需要在下述步骤四生成的~/.ssh/config中,通过指定IdentityFile的方式来声明私钥文件路径。

    3. 根据提示信息设置passphrase,并保存到本地。后续会使用该密码来远程连接DSW实例。

  2. 配置服务端公钥。

    您可以使用以下两种方式,将步骤1中生成的公钥文件~/.ssh/id_rsa.pub 或自定义文件~/.ssh/example_id_rsa.pub上传到默认工作空间路径/home/admin/workspace下。

    • 方式一:使用DSW实例的JupyterLab上传文件,具体操作,请参见上传下载数据文件

    • 方式二:在DSW实例的Terminal中手动创建并编辑公钥文件,如何进入DSW实例页面,请参见步骤一:安装SSH Server

      1. 在DSW实例页面的顶部菜单栏,单击Terminal页签,在欢迎使用DSW Terminal页面中单击创建Terminal

      2. 进入/home/admin/workspace目录。

        cd /home/admin/workspace
      3. 创建id_rsa.pub文件。

        touch id_rsa.pub
      4. 运行以下命令打开id_rsa.pub文件。

        vi id_rsa.pub
      5. i键进入编辑模式,并将本地生成公钥内容手动复制到该文件中。

      6. 添加完成后,按Esc键退出编辑模式,并输入:wq后按回车键(Enter),保存并退出文件。

  3. 启用免密登录。

    在DSW实例的Terminal中执行以下命令,启用免密登录。

    cd ~ && mkdir -p .ssh && cat /home/admin/workspace/id_rsa.pub >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys && sudo service ssh start

配置账号密码登录(可选,不推荐)

在DSW实例的Terminal中,参考以下操作步骤,设置密码认证方式。如何进入DSW实例页面,请参见步骤一:安装SSH Server

  1. 在DSW实例页面的顶部菜单栏,单击Terminal页签,在欢迎使用DSW Terminal页面中单击创建Terminal

  2. 设置root用户密码。

    passwd root
  3. 更改ssh配置文件,启用root用户以密钥或公钥认证方式登录。

    1. 打开SSH配置文件。

      vi /etc/ssh/sshd_config
    2. 将配置#PermitRootLogin prohibit-password修改为PermitRootLogin yes,并保存配置文件。

  4. 重启SSH Server服务,使设置生效。

    service ssh stop
    service ssh start

步骤四:添加DSW实例代理

  1. 进入DSW页面,具体操作,请参见创建及管理DSW实例

  2. 按照下图操作指引,查看并复制DSW实例ID。

    查询DSW实例

  3. 在本地命令行中,运行以下命令,添加一个DSW实例作为SSH Target Host。

    #Mac,Linux。
    ./proxyclient add -i=<实例ID>
    
    #Windows。
    proxyclient.exe add -i=<实例ID>

    其中<实例ID>需要替换为步骤2中查询的实例ID。

  4. 查看.ssh/config文件内容,确认代理设置已生效。

    # Mac、Linux。
    cat .ssh/config
    
    # Windows。在本地命令行中,进入用户主目录,使用以下命令查看config文件内容。您也可以直接双击打开config文件。
    explorer .ssh\config
  5. 可选:如果您在生成密钥时,使用自定义的密钥文件名,例如:example_id_rsa。请参考以下示例修改~/.ssh/config文件,使用IdentityFile指定连接Host时使用的密钥文件路径。

    Host dsw-b7a2765b267e****
        HostName dsw-b7a2765b267e****
        User root
        ProxyCommand ~/proxyclient connect --region-id=cn-hangzhou --instance-id=dsw-b7a2765b267e**** --config-file=***
        ServerAliveInterval 30
        IdentityFile ~/.ssh/example_id_rsa

步骤五:远程连接DSW实例

使用VS Code远程连接实例

不同的VS Code版本可能在操作步骤上有差异,请按照实际情况进行操作,详情请参见Visual Studio Code

  1. 在本地打开VS Code,并参照下图来安装Remote-SSH插件。

    SSH

  2. 在VS Code左侧导航栏中,单击Remote explorer

    SSH Targets

  3. 新增远程连接实例。

    1. 单击SSH后的新增新增远程连接实例。在弹出的文本框中输入DSW实例ID,并按回车键(Enter)。

      Remote

    2. 单击并选择需要更新的config文件。

      配置文件

    3. 在VS Code右下角弹出的Host added对话框中,单击Connect

      Connect

    4. 单击Linux,选择DSW实例的操作平台。

      操作平台

    5. 在文本框中输入上述步骤三中保存到本地的passphrase,并按回车键(Enter)。

      passphrase当VS Code打开欢迎页面时,表示连接成功。后续您可以在VS Code页面打开远程文件夹进行本地开发。VS Code

  4. 后续远程连接该DSW实例时,您可以右键单击目标实例,并选择连接方式,根据提示信息进行配置。

    连接方式

    远程实例连接成功后,即可打开远程文件夹进行本地开发。

使用终端工具远程连接实例

打开终端工具(例如Terminal),执行以下命令,即可登录远程实例。

ssh <实例ID>

其中<实例ID>需要替换为DSW实例的ID。

您也可以通过scp命令,在本地主机和远程实例之间复制文件或目录。

# 本地文件复制到远程实例。
scp local_file_path root@<DSW实例ID>:<remote_file_path>
# 本地目录复制到远程实例。
scp -r local_dir root@<DSW实例ID>:<remote_dir>
# 从远程实例复制文件到本地。
scp root@<DSW实例ID>:<remote_file_path> <local_file_path>
# 从远程实例复制文件目录到本地。
scp -r root@<DSW实例ID>:<remote_dir> <local_dir>

相关文档

使用ProxyClient客户端代理工具可能会影响使用体验,因此建议您使用直连方式远程连接DSW实例,以提高连接质量。具体操作,请参见直连方式

阿里云首页 人工智能平台 PAI 相关技术圈