Skip to content
回到全部文章

添加 SSH 公钥指南

如果你需要在本地通过 SSH 远程登录智算云平台的机器实例(例如开发机),可以按照以下步骤操作添加 SSH 公钥。

关于 SSH 原理介绍,建议参考阮一峰的 SSH 教程

前提条件

智算云平台上的机器实例不支持 SSH 默认的密码登录方式。因此,我们需要在智算云平台操作,在机器内部添加 SSH 公钥。

因此,请确保你可以通过智算云平台访问需要添加 SSH 公钥的机器实例。验证方式:

  • 开发机:从开发机列表页点击登录,可打开 Web Terminal。

    alt text

获取 SSH 公钥

首先,我们先查看你的机器本地是否已存在 SSH 公钥。如果存在,可直接复用。

复制已有公钥

检查本地是否已存在 SSH 密钥对。

macOS/Linux

如果系统为 macOS/Linux,SSH 公钥通常存储在 ~/.ssh 目录下。文件名通常为 /id_rsa.pub~/.ssh/id_ed25519.pub

bash
# 列出 ~/.ssh 目录下的文件
ls -alt ~/.ssh
# 查看公钥文件的内容。请按需替换为 ~/.ssh/id_ed25519.pub
cat ~/.ssh/id_rsa.pub

如上所示,请复制 cat 命令输出的内容(SSH 公钥)备用。

Windows

  1. 文件资源管理器 中打开 C:\Users\你的用户名\.ssh 目录。

    • 如果存在 id_rsa.pubid_ed25519.pub 文件,则说明你已经拥有 SSH 公钥。
    • 如果不存在以上文件,则需要按照以下步骤生成新的 SSH 密钥对。
  2. 用文本编辑器打开 id_rsa.pubid_ed25519.pub 文件。

  3. 复制文件中的所有内容。

生成新的 SSH 密钥对

如果本地没有 SSH 密钥对,则生成新的 SSH 密钥对。

macOS/Linux

  1. 打开 终端。如果需要生成新的 SSH 密钥对,请输入以下命令:

    bash
    ssh-keygen -t ed25519 -C "your_email@example.com"

    your_email@example.com 替换为你的电子邮件地址。

    • 系统会提示你输入保存密钥的文件名,直接按下回车键使用默认文件名即可。
    • 系统还会提示你输入密码,建议设置一个安全的密码,以便更好地保护你的密钥。
  2. 输入以下命令并回车,查看并复制 SSH 公钥内容:

    bash
    cat ~/.ssh/id_rsa.pub

Windows

  1. 如果需要生成新的 SSH 密钥对,建议先安装 Git Bash。打开 Git Bash,并输入以下命令:

    以生成 ed25519 类型的 SSH 密钥对为例:

    bash
    ssh-keygen -t ed25519 -C "your_email@example.com"

    your_email@example.com 替换为你的电子邮件地址。

    • 系统会提示你输入保存密钥的文件名,直接按下回车键使用默认文件名即可。
    • 系统还会提示你输入密码,建议设置一个安全的密码,以便更好地保护你的密钥。
  2. 找到公钥文件 id_ed25519.pub 并用文本编辑器打开,复制其中的所有内容。

将 SSH 公钥添加到机器实例

为了实现基于 SSH 密钥的登录,需要将本地生成的 SSH 公钥添加到智算云平台的机器实例。

创建开发机时添加 SSH 公钥

如果正在创建新的开发机,将在上一步复制的 SSH 公钥粘贴到该输入框中即可。

alt text

将 SSH 公钥添加到已创建的开发机

如果你需要将 SSH 公钥添加到已创建的开发机,请按照以下步骤操作:

  1. 如果在创建开发机时忘记上传 SSH 公钥,请先登录智算云平台,通过登录按钮打开 Web Shell,再执行后续步骤。

    alt text

  2. 确保 .ssh 目录存在,如果不存在则创建:

    bash
    mkdir -p ~/.ssh
  3. 将公钥内容添加到 authorized_keys 文件中:

    bash
    echo "ssh-rsa AAAAB3NzaC1yc2E... your_email@example.com" >> ~/.ssh/authorized_keys

    ssh-rsa AAAAB3NzaC1yc2E... your_email@example.com 替换为你在 获取 SSH 公钥 部分复制的公钥内容。

    • 如果 authorized_keys 文件不存在,该命令会自动创建。
    • 确保使用 >> 将公钥内容追加到文件末尾,而不是覆盖原有内容。
  4. 设置 authorized_keys 文件的权限:

    bash
    chmod 600 ~/.ssh/authorized_keys

    这将确保只有你拥有该文件的读写权限。

测试 SSH 连接

完成以上步骤后,你就可以尝试使用 SSH 公钥登录到你的开发机了。

前往智算云平台获取 SSH 登录命令,包含远程服务器的用户名、IP地址、和端口号。注意,不支持默认 22 端口号。

alt text

例如,如果开发机的 SSH 端口是 41587,则可以使用以下命令登录:

bash
ssh -p 41587 username@your_server_ip

如果一切配置正确,你应该可以直接登录到开发机,无需输入密码。

以 root 用户远程登录

出于安全考虑,我们默认禁止使用 root 用户身份登录智算云平台的机器实例。

确有需要,你可以自行启用 root 用户远程登录

注意事项

  • 妥善保管你的私钥,不要将私钥泄露给任何人。
  • 如果你的私钥丢失或被盗,请立即更换新的 SSH 密钥对,并更新智算云平台上的公钥。

参考资料