SSH远程开发
本节操作介绍在Windows环境中使用方式一:使用CMD工具连接云上训练作业实例和方式二: 使用MobaXterm工具连接云上训练作业实例两种方式远程登录云上实例的操作步骤。
约束限制
使用SSH连接训练作业实例的约束限制如下:
- 本地用户密钥和权限必须匹配。
- 本地用户密钥需要存放在指定目录下。
- Windows:C:\Users\{{user}}
- macOS/Linux:~
在macOS和Linux系统中,~ 表示当前用户的主目录。
- 远端镜像中的ma-user不能被锁定。
- 远端的/home/ma-user/.ssh或/root/.ssh目录权限建议设置为750或755。
- 本地或远端的OpenSSH版本不能低于8.0。
- 建议同时建立的连接数不超过10个。
如果遇到SSH连接问题,请参考本地通过SSH连接的故障排查进行解决。
前提条件
- 已创建一个训练作业实例,并开启远程SSH开发。该实例状态必须处于“运行中”。
- 关于如何新建训练作业实例,请参见新版训练创建页面。
- 关于如何在已有训练作业实例开启远程SSH开发,请参见修改SSH远程连接配置。
- 在训练作业实例详情页面查找SSH远程开发访问配置项获取开发环境访问地址(例如:dev-modelarts-cnnorth4.huaweicloud.com)和端口号。 图1 训练作业实例详情页面
- 准备好密钥对文件。
密钥对在用户第一次创建时,自动下载,之后使用相同的密钥时不会再有下载界面(用户一定要保存好),或者每次都使用新的密钥对。
方式一:使用CMD工具连接云上训练作业实例
下文以Windows系统为例进行说明。
- 打开CMD。
- 方式一:使用开始菜单
- 在电脑左下角,单击“开始”,或者按键盘上的Windows键。
- 在开始菜单中,输入CMD,单击“命令提示符”。 图2 打开CMD
- 方式二:使用运行对话框
- 在键盘按“Windows+R”键,打开“运行”对话框。
- 在“运行”对话框中输入CMD,按Enter键或单击“确定”。
- 方式一:使用开始菜单
- 在CMD中,进入密钥所在目录并执行以下命令,连接Notebook实例。
ssh -o StrictHostKeyChecking=no -i {密钥文件名} {启动用户}@{域名} -p {端口}命令中的{密钥文件名}、{启动用户}、{域名}、{端口}请替换为您实际的信息,从前提条件获取。
例如,密钥文件名为KeyPair-1234-test.pem,SSH远程开发的访问地址为ssh://ma-user@authoring-ssh-modelarts-*****.huawei.com:31092,其中ma-user为启动用户,authoring-ssh-modelarts-*****.huawei.com为域名,31092为端口。命令示例如下:
ssh -o StrictHostKeyChecking=no -i KeyPair-1234-test.pem ma-user@authoring-ssh-modelarts-*****.huawei.com -p 31092
如下图所示,出现交互界面,表示连接成功。
图3 使用CMD连接训练实例
方式二: 使用MobaXterm工具连接云上训练作业实例
- 下载并安装SSH远程连接工具,以MobaXterm为例,下载并安装MobaXterm。
- 打开MobaXterm,在左上角单击“Session”,在“Session settings”对话框的SSH页签,配置Remote host、Username、Port和Use private key,单击“OK”。 图4 配置Session
SSH远程开发的访问地址、密钥文件的路径从前提条件获取。例如,SSH远程开发的访问地址为ssh://ma-user@authoring-ssh-modelarts-*****.huawei.com:31092,配置示例如下。
表1 配置说明 配置项
说明
示例值
Basic SSH settings
Remote host
远程主机的地址,从SSH远程开发的访问地址中获取。
authoring-ssh-modelarts-*****.huawei.com
Username
用于连接远程主机的用户名,从SSH远程开发的访问地址中获取。
ma-user
Port
用于连接远程主机的端口号,从SSH远程开发的访问地址中获取。
31092
Advanced SSH settings
Use private key
密钥文件的路径。从前提条件获取。
C:\Users\***\KeyPair-1234-test.pem
如下图所示,出现交互界面,表示连接成功。
图5 使用MobaXterm连接训练实例
- (可选)分布式作业跳转其他节点容器
在分布式训练作业(Volcano Job)场景下,一个作业通常包含多个Task(如worker-0、worker-1等)。平台已自动为您配置了实例间的SSH免密登录,您可以在已登录的节点中直接跳转到其他节点,方便进行多节点集群调试。
操作步骤
- 获取目标节点主机名在当前已登录的容器终端中,通过平台自动注入的环境变量查看所有节点的主机名:
env | grep VC_%s_HOSTS
例如:
env | grep VC_WORKER_HOSTS
说明:Volcano会根据Task名称注入变量,例如:
VC_WORKER_HOSTS=ma-job-40a6df3b-d136-452e-9b8c-530baf9b777f-worker-0.ma-job-40a6df3b-d136-452e-9b8c-530baf9b777f,ma-job-40a6df3b-d136-452e-9b8c-530baf9b777f-worker-1.ma-job-40a6df3b-d136-452e-9b8c-530baf9b777f
如果节点数超过阈值(默认500节点),只能注入worker-0。如下例:
VC_WORKER_HOSTS=ma-job-40a6df3b-d136-452e-9b8c-530baf9b777f-worker-0.ma-job-40a6df3b-d136-452e-9b8c-530baf9b777f
- 直接执行SSH跳转由于平台已预置免密互信,您无需输入密码,直接通过ssh命令即可跳转到作业内的其他worker节点。
说明:worker节点间跳转ssh端口是2222,假如要跳转到worker-1节点,需要在ssh命令增加2222端口。
# 跳转到worker-1节点
ssh ma-job-40a6df3b-d136-452e-9b8c-530baf9b777f-worker-1.ma-job-40a6df3b-d136-452e-9b8c-530baf9b777f -p 2222
- 验证跳转结果跳转成功后,终端提示符会显示新的主机名。您可以通过执行hostname命令确认:
hostname
# 输出示例:
ma-job-40a6df3b-d136-452e-9b8c-530baf9b777f-worker-1.ma-job-40a6df3b-d136-452e-9b8c-530baf9b777f
注意事项
- 用户名一致性:跳转时默认使用当前登录的ma-user用户。
- 环境变量生效范围:跳转后的新节点同样拥有平台注入的环境变量(如VC_WORKER_HOSTS),方便您在各节点间自由穿梭。
- 自动互信范围:免密登录仅限于同一训练作业(Job)内的各节点容器之间。