ProxyClient方式
如果您希望通过本地工具(例如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。
进入DSW开发环境。
登录PAI控制台。
在左侧导航栏单击工作空间列表,在工作空间列表页面中单击待操作的工作空间名称,进入对应工作空间内。
在页面左上方,选择使用服务的地域。
在左侧导航栏,选择 。
可选:在交互式建模(DSW)页面的搜索框,输入实例名称或关键字,搜索实例。
单击需要打开的实例操作列下的打开。
在DSW的Terminal中,执行如下命令。
sudo apt-get update sudo apt-get install openssh-server sudo service ssh start
说明如果执行命令失败,返回结果为
sudo:未找到命令
,您可以尝试执行apt-get install sudo
命令后,再次执行上述命令即可。
步骤二:下载和安装DSW ProxyClient
下载DSW ProxyClient客户端工具,并保存到当前用户主目录下。
不同的操作系统,需要保存的目录如下:
Windows操作系统:保存在用户个人文件夹目录,例如C:\Users\<username>目录或C:\用户\<username>目录。请根据您的实际路径进行选择。
Linux操作系统:root用户保存在/root目录;普通用户保存在 /home/<username>目录。
Mac操作系统:保存在/Users/<username>目录。
其中:<username>需要替换为实际的目录。
各版本的客户端下载地址如下:
在命令行中,将下载的客户端文件修改为可执行文件。如果您下载的Windows X86 64版本,则可以跳过该步骤。
chmod 755 <proxyclient>
其中<proxyclient>表示下载的客户端文件名,需要根据实际情况修改。
生成配置文件。
输入配置命令。
# Mac,Linux。 ./proxyclient config # Windows。 proxyclient.exe config
重要Mac首次运行
./proxyclient
命令时,可能会提示:无法打开”proxyclient“,因为无法验证开发者
。请打开Mac OS的 ,设置允许proxyclient运行。根据提示设置配置文件路径。
请输入配置文件名,文件名可以带路径。
说明建议直接按回车键(Enter)使用默认路径和配置文件名称。默认为:
~/.proxyclientconfig
。您也可以指定其他路径和配置文件名称。以Windows X86 64版本为例:
C:/Users/<username>/xxx/.proxyclientconfig
。如果设置为其他路径,请在后续步骤四中执行
./proxyclient add
命令时,指定-c
或--config-file
为该路径。
根据提示分别设置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实例操作列下的保存镜像,将实例保存为镜像,添加的公钥或密码会持久化到实例镜像中,实例重新启动后仍有效。
配置实例免密登录(推荐)
生成密钥对。
在本地命令行中,运行以下命令,生成免密登录所需的公钥和私钥文件,默认创建的密钥类型为RSA。
ssh-keygen
配置密钥对保存的文件。
(推荐)不指定文件名,直接按回车键(Enter)。默认生成的密钥对文件为
~/.ssh/id_rsa
(私钥)和~/.ssh/id_rsa.pub
(公钥)。(可选)指定自定义密钥对文件名,例如:example_id_rsa。
说明如果指定了自定义密钥对文件名,您需要在下述步骤四生成的
~/.ssh/config
中,通过指定IdentityFile的方式来声明私钥文件路径。
根据提示信息设置passphrase,并保存到本地。后续会使用该密码来远程连接DSW实例。
配置服务端公钥。
您可以使用以下两种方式,将步骤1中生成的公钥文件
~/.ssh/id_rsa.pub
或自定义文件~/.ssh/example_id_rsa.pub
上传到默认工作空间路径/home/admin/workspace
下。方式一:使用DSW实例的JupyterLab上传文件,具体操作,请参见上传下载数据文件。
方式二:在DSW实例的Terminal中手动创建并编辑公钥文件,如何进入DSW实例页面,请参见步骤一:安装SSH Server。
在DSW实例页面的顶部菜单栏,单击Terminal页签,在欢迎使用DSW Terminal页面中单击创建Terminal。
进入
/home/admin/workspace
目录。cd /home/admin/workspace
创建id_rsa.pub文件。
touch id_rsa.pub
运行以下命令打开id_rsa.pub文件。
vi id_rsa.pub
按
i
键进入编辑模式,并将本地生成公钥内容手动复制到该文件中。添加完成后,按Esc键退出编辑模式,并输入
:wq
后按回车键(Enter),保存并退出文件。
启用免密登录。
在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。
在DSW实例页面的顶部菜单栏,单击Terminal页签,在欢迎使用DSW Terminal页面中单击创建Terminal。
设置root用户密码。
passwd root
更改ssh配置文件,启用root用户以密钥或公钥认证方式登录。
打开SSH配置文件。
vi /etc/ssh/sshd_config
将配置
#PermitRootLogin prohibit-password
修改为PermitRootLogin yes
,并保存配置文件。
重启SSH Server服务,使设置生效。
service ssh stop service ssh start
步骤四:添加DSW实例代理
进入DSW页面,具体操作,请参见创建及管理DSW实例。
按照下图操作指引,查看并复制DSW实例ID。
在本地命令行中,运行以下命令,添加一个DSW实例作为SSH Target Host。
#Mac,Linux。 ./proxyclient add -i=<实例ID> #Windows。 proxyclient.exe add -i=<实例ID>
其中<实例ID>需要替换为步骤2中查询的实例ID。
查看.ssh/config文件内容,确认代理设置已生效。
# Mac、Linux。 cat .ssh/config # Windows。在本地命令行中,进入用户主目录,使用以下命令查看config文件内容。您也可以直接双击打开config文件。 explorer .ssh\config
可选:如果您在生成密钥时,使用自定义的密钥文件名,例如: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。
在本地打开VS Code,并参照下图来安装Remote-SSH插件。
在VS Code左侧导航栏中,单击
。
新增远程连接实例。
单击SSH后的
新增远程连接实例。在弹出的文本框中输入DSW实例ID,并按回车键(Enter)。
单击并选择需要更新的config文件。
在VS Code右下角弹出的Host added对话框中,单击Connect。
单击Linux,选择DSW实例的操作平台。
在文本框中输入上述步骤三中保存到本地的passphrase,并按回车键(Enter)。
当VS Code打开欢迎页面时,表示连接成功。后续您可以在VS Code页面打开远程文件夹进行本地开发。
后续远程连接该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实例,以提高连接质量。具体操作,请参见直连方式。