远程连接:SSH直连方式

当您想要在本地或者其它设备上,使用终端或VSCode远程连接DSW实例时,可以采用SSH直连的方式,其连接稳定并且快速。

计费说明

当需要从公网远程连接DSW实例时,需配置NAT网关弹性公网IP (EIP)。NAT网关和EIP为独立计费的云产品,会持续计费,即使DSW已停止。因此,如果不再需要,请务必及时删除

使用限制

  • 支持的实例类型

    • 使用公共资源组创建的后付费DSW实例。资源规格不能以 ecs.ebm 开头。

    • 使用灵骏智算资源创建的DSW实例。

  • 公网连接数量限制

    当您通过公网远程连接DSW实例时,PAI会自动为每个公网NAT网关配置DNAT规则。您无需手动配置。

    每个公网NAT网关最多可配置100DNAT规则,因此最多支持100DSW实例的同时连接。更多配额信息,请参见配额

步骤一:开通内网DNS解析

开通内网DNS解析。由于DSW实例通常部署在VPC环境中,而VPC内的服务间通信依赖内网域名来实现高效、安全的访问。当通过SSH连接DSW实例时,内网DNS解析服务会根据域名解析出实例的内网IP地址,从而确保连接能够成功建立。

步骤二:生成SSH公钥

在客户端上执行如下命令生成公钥。在生成过程中需要设置用于登录DSW实例的密码,如果您想要使用remote_ikernel工具连接实例(见本文场景示例),请不要设置密码,直接按回车键(Enter)

  • (推荐)将公钥生成到默认路径下:

    ssh-keygen

    执行该命令后,默认在以下目录中生成公钥(id_rsa.pub)和私钥(id_rsa)文件。如果当前位置已存在SSH密钥对,则这些文件将被覆盖。不同系统默认路径如下:

    • Windows操作系统:保存在C:\Users\<username>\.ssh目录或C:\用户\<username>\.ssh目录。

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

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

  • 将公钥生成到自定义目录下:

    ssh-keygen -f /your/path/example_rsa # 将在/your/path下生成example_rsa.pubexample_rsa

步骤三:配置DSW实例SSH参数

创建DSW实例时,配置如下网络相关参数。

对于已创建的实例,单击变更配置修改对应参数,然后单击确定,更新配置。

配置专有网络、交换机和安全组

如果您使用公共资源创建DSW实例,需要配置专有网络交换机安全组。您可以参考如下操作步骤创建,更详细的内容请参见创建专有网络与交换机,及管理安全组

创建专有网络、交换机、和安全组

  1. 单击DSW配置页面的创建专有网络。

    image配置专有网络VPC名称、IPv4网段及交换机信息。其他参数默认即可,然后单击确定创建VPC和交换机。

    image

  2. 返回DSW配置页面,专有网络配置选择刚刚创建的专有网络VPC。

  3. 单击创建安全组,参数默认即可,单击确定创建。然后返回DSW配置页面,安全组配置为刚刚创建的安全组。

    image

    请确保安全组入方向允许访问22端口。

    image

配置SSH相关参数

  • 启用SSH:单击打开;

  • SSH公钥:将步骤二中生成的公钥文件id_rsa.pub的内容复制到该文本框中。

    如果您需要同时支持VPC内登录和公网登录方式,需同时添加多个客户端的公钥。请按照回车换行的方式逐个添加,最多支持添加10个公钥。
  • SSH访问方式:默认支持VPC内访问。如需公网登录,请选中公网访问,然后配置以下参数:

您可参考如下内容创建NAT网关和弹性公网IP:

创建NAT网关及弹性公网IP

  1. 单击创建NAT网关

    image

    NAT网关创建页面按需配置参数,或者使用默认参数。然后单击创建弹性公网IP

    image

  2. 在弹性公网IP创建页面按需配置参数,或者使用默认参数,然后单击立即购买

  3. 返回NAT网关创建页面,弹性公网IP实例选择刚刚创建的实例,然后单击立即购买创建NAT网关。

步骤四:安装SSH Server

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

  1. 打开需要操作的DSW实例。

  2. DSWTerminal中,执行如下命令。

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

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

  3. 执行如下命令可以查看SSH Server状态。

    service ssh status

步骤五:远程连接DSW实例

  1. 查看访问方式。

    DSW页面,单击实例名称进入实例详情页面。在实例配置页签的访问配置区域中,查看公网访问方式VPC访问方式image

    说明

    如果SSH配置未选择公网登录,则此处将只显示VPC访问方式,不显示公网访问方式。

  2. 连接DSW实例。

    通过SSH连接

    • 公网访问

      在本地命令行或其他终端中,使用步骤1查询的公网访问方式远程连接到DSW实例。

      ssh root@xx.xx.xx.xx -p 1024 
      # 如果私钥不在默认路径上,需要指定私钥的位置
      ssh -i /your/path/example_rsa root@xx.xx.xx.xx -p 1024 
    • VPC访问

      VPC内的其他终端(例如ECS实例),使用步骤1查询的VPC访问方式远程连接到DSW实例。

      ssh root@dsw-notebook-xxxx.dsw-xxxx.dsw.pai.alibaba.com -p 22
      # 如果私钥不在默认路径上,需要指定私钥的位置
      ssh -i /your/path/example_rsa root@dsw-notebook-xxxx.dsw-xxxx.dsw.pai.alibaba.com -p 22

    通过本地VSCode连接

    1. 打开VSCode,在Extensions中安装Remote - SSH插件。

      image

    2. 单击左下角image,唤出Remote-SSH弹窗,选择Connect to Host... > Add New SSH Host...

    3. 输入SSH连接命令。

      ssh root@xx.xx.xx.xx -p 1024 
      # 如果私钥不在默认路径上,需要指定私钥的位置
      ssh -i /your/path/example_rsa root@xx.xx.xx.xx -p 1024 

      image

    4. 单击右下角Connect,左下角显示连接成功。

      image

    5. 打开DSW实例中的目录,开始远程开发和调试。

      image

    6. 运行时可连接DSW实例中的Kernel。

      image

场景示例:DSW实例上运行本地Notebook代码

前提条件

已按照本文步骤一到步骤四完成SSH直连配置,且生成SSH公钥时没有设置密码

操作步骤

  1. 在本地Terminal安装remote_ikernel工具,做初始化配置,并添加一个remote kernel。

    pip install remote_ikernel
    remote_ikernel manage --add \
    --kernel_cmd="ipython kernel -f {connection_file}" \  # 无需修改
    --name="Remote Python" \
    --interface=ssh \
    --host=root@*.*.*.*:1024  # 此处修改为您的host地址,如果私钥不在默认路径上,则需要设置为 --host="-i /your/path/example_rsa root@*.*.*.*:1024"

    如果回显提示如下,表示remote kernel添加成功。

    Added kernel ['rik_ssh_root_121_40_*_*_1024_remotepython']: SSH root@121.40.*.*:1024 Remote Python.

    查看remote kernel配置信息可执行如下命令。

    remote_ikernel manage --show
  2. 在本地VSCode中,打开一个Notebook文件,右上角kernel切换,可在搜索框中选到Remote Python。

    image

常见问题

1. 远程连接SSH直连和ProxyClient代理两种方案区别?

方案A:SSH 直连(推荐)

方案B:ProxyClient 代理

特点

需要配置VPC、NAT网关等网络组件。连接更快、更稳定。

无需其他网络组件。但连接速度和稳定性可能较差。

支持实例

  • 使用公共资源组创建的后付费DSW实例。资源规格不能以 ecs.ebm 开头。

  • 使用灵骏智算资源创建的DSW实例。

所有类型实例。

鉴权方式

使用SSH的公钥或私钥进行鉴权。

  1. 先通过ProxyClient填写阿里云AccessKey等信息进行鉴权。

  2. 再通过SSH的公钥或私钥进行鉴权。

访问途径

  • 通过公网进行访问(需要配置NAT网关和EIP)。

  • 在用户VPC内通过内网进行访问。

通过公网进行访问。

配置方法

远程连接:SSH直连方式

远程连接:ProxyClient方式

工作原理

PAI 会自动在NAT 网关上创建 DNAT 规则,将公网的 SSH 请求转发到您的 DSW 实例。

所有流量通过 PAI 的代理服务器进行中转。

计费提醒

需要公网访问时,NAT 网关和 EIP 会持续计费,即使DSW已停止。如果不再需要,请及时删除。

此配置不产生额外费用。

2. 是否支持使用PyCharm等本地WebIDE来远程连接到DSW实例?

原则上支持所有基于原生SSH协议实现的功能。但需要注意的是,如果您使用PyCharm作为客户端,则会在DSW实例中自动触发下载和安装服务端。因此,您需要确保您指定的DSW实例具有公网访问能力。

3. 使用SSH连接DSW时,遇到连接失败、超时或密钥被拒等问题,该如何解决?

连接失败通常由网络配置、认证或权限问题导致,您可以按以下步骤排查:

  • 公网地址访问不通,如何解决?

    • 请先在VPC环境内,确认您的VPC地址是否可以访问DSW实例。

    • 如果VPC地址可以访问,但公网地址无法访问。请确认在您选择的VPC中是否创建了多个公网NAT网关:

      • 如果创建了多个公网NAT网关,请参考VPC内多公网NAT网关部署方案,检查您的NAT网关、vSwitch和路由表之间的关系是否正确。您在DSW中选择的vSwitch能够在路由表中正确路由到您选择的NAT网关,这样才能使您的SSH请求的返回结果返回到您的客户端。

      • 如果您只有一个公网NAT网关,请使用自助问题排查中的网络连通性问题进行排查。输入您本机的公网IP、您的公网EIP以及DSW实例分配给您的端口(即在DSW实例详情页查询的公网访问方式中配置的端口),分析网络可达性。

  • VPC地址访问不通,如何解决?

    • 请确认您是否使用了自定义镜像,您的自定义镜像里是否安装并开启了SSH服务。详情请参见步骤四:安装SSH Server

    • 请确认您创建实例的安全组规则内,入方向是否允许TCP 22端口的访问。

    • 如果上述方法无法解决您的问题,请联系您的商务经理进行进一步排查。

  • 连接超时或无法访问

    • SSH直连 (公网):请检查为DSW实例配置的公网NAT网关和安全组规则,确保已对公网放行了正确的端口(默认为1024) 。

    • SSH直连 (VPC内):如果您从VPC内的ECS连接DSW,请检查两者是否在同一VPC下,并尝试为VPC开通私网DNS解析服务。

  • 密钥被拒绝 (Permission denied / Server refused our key)

    • 请确保已在本地通过ssh-keygen生成密钥对,并将公钥(id_rsa.pub文件的内容)完整、正确地添加到了DSW实例的SSH配置中 。

    • 在执行SSH命令时,请确认您使用的私钥与添加到DSW的公钥匹配。若私钥文件不在默认路径(~/.ssh/id_rsa),需要使用-i参数显式指定其路径 。

  • VSCode连接失败

    • 确保已安装Remote - SSH插件 。

    • 添加新主机时,输入的SSH命令要完整,例如 ssh root@xx.xx.xx.xx -p 1024

    • 连接失败后,可先尝试在本地终端直接使用SSH命令连接,根据终端的报错信息进一步定位问题。

4. 如何查看实例公网IP?

如果您已配置好公网NAT网关,可以通过以下步骤查看公网ip。

查看公网IP操作步骤

  1. DSW实例列表页,单击实例名称进入实例配置页面。

  2. 找到网络信息的区域,单击弹性公网IP,即可在弹性公网实例页面查看到IP。

    image

    image

5. DSW实例是否支持创建多个用户并分别通过SSH登录?

DSW实例默认仅提供root用户用于SSH登录 。目前,DSW原生不支持创建多个独立用户并为他们分别配置SSH隔离登录的功能。您可以尝试在实例内部手动创建新用户,但这并非官方支持的标准用法。

6. 在本地IDE(如VSCode、PyCharm)中连接DSW时,看不到工作目录文件怎么办?

SSH登录后默认的目录可能是root用户的主目录(/root)。您的工作文件通常位于挂载的数据盘路径下,例如 /mnt/workspace。在VSCode中,您可以通过侧边栏的“文件” > “打开文件夹”功能,手动选择并打开服务器上的正确工作目录,即可在文件浏览器中看到您的项目文件。

相关文档

  • 如果您的场景不适合或不想配置额外网络组件,可以尝试使用ProxyClient方式进行远程连接。