Skip to content

SSH 远程连接

AICoder 是智算云平台上的一个云端辅助开发环境,提供免费的 CPU 实例,专为管理和辅助 AI 工作负载而设计。通过 SSH,您可以从本地计算机或另一台 AICoder 安全地访问目标 AICoder,执行命令、管理文件等。两种方式使用相同的跳板机连接机制,区别在于 SSH 客户端和私钥所在的位置。

前置条件

  • 在开始之前,请确保您已成功申请 AICoder。只要成功打开 AICoder Shell,即表示已成功申请 AICoder。如果尚未完成此步骤,请参考使用 AICoder Shell
  • 本文假设用户已了解如何生成与添加 SSH 公钥,以及基于公私钥验证的 SSH 远程登录方式。如需帮助,建议参考阮一峰的 SSH 教程

准备 SSH 客户端

SSH 客户端是运行 ssh 命令并发起连接的设备或实例。私钥必须保存在 SSH 客户端上,目标 AICoder 则通过 ~/.ssh/authorized_keys 中对应的公钥验证连接。

连接方式在哪里运行 ssh私钥保存位置典型用途
本地计算机到 AICoder本地终端或 VS Code本地计算机远程开发、本地上传和下载
AICoder 到 AICoder源端 AICoder源端 AICoder跨可用区传输共享存储数据
  • Mac 用户:可使用自带终端(Terminal)。
  • Windows 用户:可在 CMD 或 PowerShell 中使用 Windows 自带的 OpenSSH 客户端。如无法使用,可下载安装 Git for Windows,通过 Git Bash 使用 SSH。
  • 其他工具:如 VS Code 等支持 SSH 客户端的工具。
  • 从另一台 AICoder 连接:在源端 AICoder 中运行 ssh。源端必须持有可用于出站连接的私钥;源端 authorized_keys 中已有的公钥只用于接受入站连接,不能替代私钥。跨可用区传输共享存储数据时,参见跨可用区传输共享高性能存储数据

终端录制

检查本地 SSH 客户端

在演示库中打开

适用于开始配置 AICoder、开发机或极值算力实例 SSH 连接前的准备检查。

配置并连接 AICoder

AICoder 仅支持 SSH 密钥对认证,您需要向智算云平台提供您的 SSH 公钥。SSH 密钥认证使用公私钥对进行身份验证,确保连接安全可靠。

注意

AICoder 禁用了 SSH 基于密码的认证,仅支持基于 SSH 公私钥对的身份验证。

如果使用另一台 AICoder 作为 SSH 客户端,请在源端生成独立密钥对,将公钥登记到平台并重启目标端。不要把本地计算机的私钥复制到源端 AICoder。

Step 1 添加 SSH 公钥

您需要将 SSH 公钥添加到 AICoder,以便通过密钥认证登录。推荐使用智算云平台的 SSH 公钥管理功能:

  1. 访问智算云平台的 SSH 公钥管理页面。添加您的 SSH 公钥。

  2. 如果已经在网页端打开过 AICoder Shell,由于实例会持续运行,所以您添加的 SSH 公钥不会立即在 AICoder 中生效。请在网页端打开目标 AICoder Shell,在 Shell 窗口左上角找到一键重启图标并点击。重新启动时,平台会自动将公钥注入到 ~/.ssh/authorized_keys 文件中。

    重要

    一键重启是 AICoder Shell 窗口中的界面操作,不是在终端中执行的 Shell 命令。添加 SSH 公钥后,必须点击该按钮重启目标 AICoder;新公钥只有在重启完成并由平台注入后才会生效。

Step 2 获取 AICoder SSH 连接命令

AICoder 支持 SSH 远程登录,但不支持 SSH 直接连接,需要使用 SSH 跳转功能,该连接首先路由到智算云平台的跳板机,再连接到 AICoder 实例。请使用下方任一方式获取 SSH 连接命令。

一键复制

在网页端打开 AICoder Shell,在 Shell 窗口右上角找到钥匙图标,点击展示 SSH 和文件传输命令。

直接复制弹窗中的 SSH 连接命令。在发起连接的 SSH 客户端中粘贴并执行该命令,即可通过 SSH 连接到 AICoder。

注意

  • 该操作可能要求用户已完成实名认证。请按照提示完成认证。
  • 首次打开后,SSH 地址仅以密文展示。阅读并同意补充协议后,弹窗中将展示展示当前 AICoder 实例的真实地址。

终端录制

通过 ssh -J 连接 AICoder

在演示库中打开

适用于需要从本地终端直接进入 AICoder Shell 的场景。

自行拼接

您也可以自行拼接 AICoder 的 SSH 远程连接命令。

SSH 命令格式解析:

language-bash
ssh -J <ssh-jumper> root@<aicoder_id>
  • -J <ssh-jumper> 用于启用 SSH 跳转功能,该连接首先路由到智算云平台的跳板机,再由跳板机转发到您的 AICoder 实例。跳板机具体地址与网页弹窗中具体展示的值一致: ssh-jumper.neogpu.com。

  • root 为默认 SSH 登录用户名(部分旧版实例展示为非 root 普通用户名,请重启)。

  • <aicoder_id> 为待连接的目标 AICoder ID。您需要在网页端打开 AICoder Shell,在看到类似下方的命令行提示后,获取 aic- 前缀的字符串,移除后缀 -aicoder-0 即为 AICoder ID。

    如下方示例,某用户登录的 AICoder 主机为 aic-da3sf44m5p44xkga-aicoder-0,其中 aic-da3sf44m5p44xkga 即为 AICoder ID。

    language-shell
    root@aic-da3sf44m5p44xkga-aicoder-0:~#

使用以上格式,可拼接出一个完整的 SSH 命令(示例):

language-shell
ssh -J ssh-jumper.neogpu.com root@aic-da3sf44m5p44xkga

终端录制

从 AICoder 提示符拼接 SSH 命令

在演示库中打开

适用于控制台没有直接给出连接命令,或需要理解实例 ID 与 SSH 命令关系的场景。

Step 3 使用 SSH 客户端进行连接

请在持有对应私钥的 SSH 客户端中执行连接命令。

验证跳板机和目标 AICoder 的主机密钥

第一次执行包含 -J 的连接命令时,SSH 客户端可能分别要求确认平台跳板机和目标 AICoder 的主机密钥。提示中会显示主机名、密钥类型和 SHA256: 指纹。主机密钥用于验证服务器身份,与登录时使用的用户公钥不是同一个密钥。

核对提示中的主机名、密钥类型和 SHA256: 指纹,确认后输入 yes。SSH 客户端通常会把接受的记录保存到 known_hosts。如果提示内容与预期不同,或后续连接提示主机密钥发生变化,先重新核对 AICoder 弹窗中的连接信息;仍有疑问时再联系管理员或技术支持。

系统自带终端

  • Linux/Mac 用户:可使用自带终端(Terminal)。

  • Windows 用户:可在 CMD 或 PowerShell 中使用 Windows 自带的 OpenSSH 客户端

    注意

    如果无法安装 Windows 自带的 OpenSSH 客户端,可下载安装 Git for Windows,通过 Git Bash 使用 SSH。

第三方工具

另一台 AICoder

如果客户端是另一台 AICoder,可直接在源端 AICoder Shell 中执行从目标端弹窗复制的 SSH 命令。连接目标可用区的 AICoder 时,必须使用目标端的跳板机参数、登录用户名和 AICoder ID。完整的密钥准备和验证步骤参见跨可用区传输共享高性能存储数据

简化 SSH 连接

为了方便快速访问 AICoder,您可以设置别名(bash/zsh alias)或修改 SSH 配置文件。以下仅介绍编辑 SSH 配置文件的方式。配置完成后,连接 AICoder 的 SSH 命令可简化为 ssh aicoder

打开 SSH 客户端上的 ~/.ssh/config,添加如下记录:

language-text
Host aicoder
  HostName aic-c8lkg5b88mieqw6b
  User root
  IdentitiesOnly Yes
  ProxyJump ssh-jumper.neogpu.com
  • Host:自定义远程主机名,例如 aicoder
  • HostName:必须填写 AICoder ID。
  • User:SSH 远程登录用户,填写 AICoder 默认用户 root
  • IdentitiesOnly:填写 Yes。
  • ProxyJump:表示使用了 SSH 跳转功能,该连接首先路由到跳板机,再由平台转发到您的 AICoder 实例。注意,跳板机具体地址必须以您的网页弹窗中具体展示的值为准

警告

如果使用非默认私钥文件,请确保私钥权限正确(chmod 600),并在配置中指定 IdentityFile。详见使用自定义私钥

终端录制

用 SSH Config 简化 AICoder 连接

在演示库中打开

适用于频繁连接同一 AICoder 实例,减少重复输入长连接命令。

扩展功能

文件传输:通过 scpsftprsync 安全传输文件。大文件、大量文件或需要断点续传时优先使用 rsync。请参考文件传输指南

用户账户说明

AICoder Shell 默认使用 root 帐号登录。部分旧版实例可能使用非 root 用户,建议重启实例以更新。

注意

如需切换到 shell 用户,可使用以下命令:

  • sudo runuser -u shell /bin/bash
  • sudo su - shell -s /bin/bash

常见问题

无法与 AICoder 建立 SSH 连接

如果无法与 AICoder 建立 SSH 连接,请按照以下步骤排查:

  1. 检查 SSH 客户端上的私钥文件

    • macOS、Linux 或 AICoder:~/.ssh/
    • Windows: C:\Users\<用户名>\.ssh\

    确认客户端私钥文件路径正确(常见为 ~/.ssh/id_rsa/id_ed25519 等)。SSH 客户端一般在默认路径下按顺序寻找私钥文件。如果使用非默认私钥文件名,例如 id_rsa-mykey,导致 SSH 客户端无法找到私钥,可以重新生成 SSH 密钥对,并使用默认私钥文件名。如果必须使用非默认私钥文件名,请在 SSH 连接命令中使用 -i 选项手动指定私钥。也可修改客户端 SSH 配置文件,指向正确的私钥文件。

  2. 检查 AICoder 内 SSH 公钥文件,确保包含您的公钥。

    language-bash
    cat ~/.ssh/authorized_keys
  3. 测试网络连接。由于 AICoder 需要通过平台提供的跳板机访问,因此需要测试 SSH 客户端与平台跳板机之间的连接。例如,使用 nc 命令测试与跳板机的连接:

    language-bash
    nc -vz ssh-jumper.neogpu.com 22

    注意,跳板机具体地址必须以您的网页弹窗中具体展示的值为准

    • 成功:显示 Connection to ssh-jumper.neogpu.com port 22 [tcp/*] succeeded!
    • 失败:网络问题或防火墙限制。请联系您的网络管理员,检查网络设置。
  4. 如仍无法解决,请执行以下命令获取详细输出,并联系技术支持:

    language-bash
    ssh -vv -J ssh-jumper.neogpu.com root@aic-c8lkg5b88mieqw6b

    注意,跳板机具体地址必须以您的网页弹窗中具体展示的值为准

终端录制

使用 -vv 排查 AICoder SSH 连接

在演示库中打开

适用于排查无法连接 AICoder、跳板机不可达、密钥未被使用等问题。

在 SSH Config 文件中使用自定义私钥

如果使用了非默认的 SSH 私钥文件路径,请务必确保私钥文件权限符合要求(可对私钥文件执行 chmod 600),并在 SSH 客户端的 ~/.ssh/config 文件中使用 IdentityFile 指定自定义私钥文件路径。

以下仅提供一个样本配置:

language-text
Host aicoder
HostName aic-c8lkg5b88mieqw6b
User root
IdentitiesOnly Yes
IdentityFile ~/.ssh/custom_private_key
ProxyJump ssh-jumper.neogpu.com

终端录制

为 AICoder 指定自定义私钥

在演示库中打开

适用于本地存在多把 SSH 私钥,或 AICoder 使用非默认私钥文件的场景。

是否支持在手动在 AICoder 中添加公钥

如暂不便重启,也可以手动在 AICoder 中添加公钥,修改后立即生效。AICoder 下次重启时,平台将自动写入最新的 SSH 公钥,并自动移除手动添加的公钥中重复的公钥。请参考添加 SSH 公钥指南

终端录制

在 AICoder 中检查 authorized_keys

在演示库中打开

适用于需要手动确认或补充 AICoder 内部授权公钥的排障场景。

AICoder 的 SSH 连接命令中的 -J 选项是什么?什么是跳板机?

-J 选项(对应配置文件中的 ProxyJump)用于指定跳板机(Jump Host)。

由于 AICoder 实例运行在云端私有网络中,无法从公网直接访问,因此需要通过一个具有公网 IP 的中间服务器进行转发,这个中间服务器就是跳板机

当您执行 ssh -J <ssh-jumper> root@<aicoder_id> 时:

  1. SSH 客户端首先建立与跳板机 <ssh-jumper> 的安全连接。
  2. 然后通过跳板机建立通往目标 AICoder 实例 <aicoder_id> 的安全通道。

这种方式既保证了 AICoder 实例的网络隔离安全,又提供了便捷的访问方式。

注意

-J 跳转机制仅适用于 AICoder 实例访问。对于其他计算实例,请直接使用平台提供的 SSH 主机 IP 或域名进行连接,无需配置跳板机。