为了解决ProxyClient代理工具连接DSW实例时频繁重连、速度低等问题,DSW提供了SSH直连方式,旨在提供更稳定、更快速的连接体验。
使用限制
直连方式支持的DSW实例类型。
使用公共资源组创建的后付费DSW实例。
使用灵骏智算资源创建的DSW实例。
公网NAT网关支持DSW实例数量限制。
由于VPC的公网NAT网关的限制,当使用公网登录方式远程连接DSW实例时,PAI会为您的每个公网NAT网关配置最多100条DNAT规则,您无需手动配置。因此,一个公网NAT网关最多同时支持100个DSW实例。更多有关配额的详情,请参见配额。
准备工作
当使用公共资源组创建后付费DSW实例时,需要完成以下准备工作:
当使用灵骏智算资源创建DSW实例时,需要创建灵骏智算资源。具体操作,请参见灵骏智算资源配额。
如果需要通过公网登录方式(即从本地命令行或其他客户端)远程连接DSW实例,您需要为专有网络创建公网NAT网关并绑定EIP。具体操作,请参见创建公网NAT网关、绑定EIP。
开通内网DNS解析(PrivateZone),具体操作,请参见开通内网DNS解析。
步骤一:获取SSH公钥
首先需要在客户端上生成公钥,在生成过程中需要设置用于登录DSW实例的密码,如果您想要使用remote_ikernel工具连接实例(见本文场景示例),请不要设置密码,直接按回车键(Enter)。生成公钥的命令如下:
(推荐)将公钥生成到默认路径下:
ssh-keygen -m PEM -t rsa -b 4096
执行该命令后,默认在以下目录中生成4096位RSA类型的公钥(
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 -m PEM -t rsa -b 4096 -f /your/path/example_rsa # 将在/your/path下生成example_rsa.pub和example_rsa
步骤二:开启DSW实例的直连功能
在创建DSW实例时,对如下网络相关参数进行配置,其他参数配置详情,请参见创建DSW实例。对于已创建的实例,单击变更配置修改对应参数,然后单击确定,更新配置。
公共资源组后付费实例配置
参数 | 描述 | |
网络配置 | 专有网络 | 选择已创建的专有网络、交换机和安全组。 |
安全组 | ||
交换机 | ||
公网访问网关 | 请根据您的使用场景进行选择:
| |
SSH配置 说明 打开网络配置后可见。 | SSH公钥 | 打开SSH配置开关,将步骤一中生成的公钥文件 说明 如果您需要同时支持VPC内登录和公网登录方式,您需要同时添加多个客户端的公钥。请按照回车换行的方式逐个添加公钥,最多支持添加10个公钥。 |
登录方式 |
|
灵骏资源组实例配置
参数 | 描述 | |
SSH配置 | SSH公钥 | 打开SSH配置开关,将步骤一中生成的公钥文件 说明 如果您需要同时支持VPC内登录和公网登录方式,您需要同时添加多个客户端的公钥。请按照回车换行的方式逐个添加公钥,最多支持添加10个公钥。 |
登录方式 |
|
步骤三:安装SSH Server
如果您的DSW实例使用的是官方预置镜像或基于官方预置镜像生成的自定义镜像,则已默认安装了SSH Server,您可以跳过该步骤。否则需要按照以下步骤来手动安装SSH Server。
打开需要操作的DSW实例。
在DSW的Terminal中,执行如下命令。
sudo apt-get update sudo apt-get install openssh-server sudo service ssh start
如果执行命令失败,返回结果为sudo,表示未找到命令,您可以尝试执行
apt-get install sudo
命令后,再次执行上述命令即可。执行如下命令可以查看SSH Server状态。
service ssh status
步骤四:远程连接DSW实例
查看访问方式。
在DSW页面,单击实例名称进入实例详情页面。在实例配置页签的访问配置区域中,查看公网访问方式和VPC访问方式。
说明如果SSH配置未选择公网登录,则此处将只显示VPC访问方式,不显示公网访问方式。
连接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连接
打开VSCode,在Extensions中安装Remote - SSH插件。
单击左下角,唤出Remote-SSH弹窗,选择Connect to Host... > Add New SSH Host...。
输入SSH连接命令。
ssh root@xx.xx.xx.xx -p 1024 # 如果私钥不在默认路径上,需要指定私钥的位置 ssh -i /your/path/example_rsa root@xx.xx.xx.xx -p 1024
单击右下角Connect,左下角显示连接成功。
打开DSW实例中的目录,开始远程开发和调试。
运行时可连接DSW实例中的Kernel。
场景示例:在DSW实例上运行本地Notebook代码
前提条件
已按照本文步骤一到步骤三完成SSH直连配置,且生成SSH公钥时没有设置密码。
操作步骤
在本地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
在本地VSCode中,打开一个Notebook文件,右上角kernel切换,可在搜索框中选到Remote Python。
常见问题
是否支持使用PyCharm等本地WebIDE来远程连接到DSW实例?
原则上支持所有基于原生SSH协议实现的功能。但需要注意的是,如果您使用PyCharm作为客户端,则会在DSW实例中自动触发下载和安装服务端。因此,您需要确保您指定的DSW实例具有公网访问能力。
VPC地址访问不通,如何解决?
请确认您是否使用了自定义镜像,您的自定义镜像里是否安装并开启了SSH服务。详情请参见步骤三:安装SSH Server。
请确认您创建实例的安全组规则内,入方向是否允许TCP 22端口的访问。
如果上述方法无法解决您的问题,请联系您的商务经理进行进一步排查。
公网地址访问不通,如何解决?
请先在VPC环境内,确认您的VPC地址是否可以访问DSW实例。
如果VPC地址可以访问,但公网地址无法访问。请确认在您选择的VPC中是否创建了多个公网NAT网关:
如果创建了多个公网NAT网关,请参考同VPC内多公网NAT网关部署方案,检查您的NAT网关、vSwitch和路由表之间的关系是否正确。您在DSW中选择的vSwitch能够在路由表中正确路由到您选择的NAT网关,这样才能使您的SSH请求的返回结果返回到您的客户端。
如果您只有一个公网NAT网关,请使用自助问题排查中的网络连通性问题进行排查。输入您本机的公网IP、您的公网EIP以及DSW实例分配给您的端口(即在DSW实例详情页查询的公网访问方式中配置的端口),分析网络可达性。
相关文档
DSW也支持使用ProxyClient客户端代理工具远程连接DSW实例。具体操作,请参见ProxyClient方式。