密钥管理 - Amazon Transfer Family
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

密钥管理

在本节中,您可以找到有关 SSH 密钥、如何生成密钥以及如何轮换密钥的信息。

生成 SSH 密钥

您可以设置服务器以使用服务管理的身份验证方法对用户进行身份验证,其中用户名和 SSH 密钥存储在服务中。用户的公有 SSH 密钥作为用户属性上传到服务器。服务器将此密钥用作标准的基于密钥的身份验证过程的一部分。每个用户均可使用单个服务器存档多个公有 SSH 密钥。有关每个用户可存储的密钥数的限制,请参阅Amazon服务配额中的Amazon一般参考.

作为服务托管身份验证方法的替代方法,您可以使用自定义身份提供程序对用户进行身份验证。这将允许您使用 Amazon API Gateway 终端节点插入现有身份提供程序。有关更多信息,请参阅使用自定义身份提供商进行身份

服务器只能使用一种方法(服务管理或自定义身份提供程序)对用户进行身份验证,并且在创建服务器时无法更改该方法。

在 macOS、Linux 或 UNIX 上创建 SSH 密钥

在 macOS、Linux 或 UNIX 操作系统上,您可以使用ssh-keygen命令创建 SSH 公钥和 SSH 私钥(也称为 key pair)。

在 macOS、Linux 或 UNIX 操作系统上创建 SSH 密钥

  1. 在 macOS、Linux 或 UNIX 操作系统上,打开命令终端。

  2. 在提示符中,输入以下命令:ssh-keygen -P "" -m PEM -f key_name.

    注意

    key_name是 SSH key pair 文件名。

    下面是ssh-keygen输出。

  3. 导航到key_name.pub 文件并打开它。

  4. 复制文本并将其粘贴到SSH 公有密钥.

注意

当您运行 ssh-keygen 命令时(如前所示),它将公有密钥和私有密钥创建为当前目录中的文件。

在微软 Windows 上创建 SSH 密钥

Windows 使用略微不同的 SSH 密钥对格式。公有密钥必须采用 PUB 格式,私有密钥必须采用 PPK 格式。在 Windows 上,您可以使用 PuTTYgen 以适当的格式创建 SSH 密钥对。您还可以使用 PuTTYgen 来转换使用ssh-keygen设置为 .ppk 文件。

注意

如果您向 WinSCP 提供的私有密钥文件不是 .ppk 格式,该客户端会为您将密钥转换为 .ppk 格式。

有关在 Windows 上使用 PuTTYgen 创建 SSH 密钥的教程,请参阅SSH 网站.

轮换 SSH 密钥

为安全起见,我们推荐轮换 SSH 密钥的最佳实践。通常,此轮换被指定为安全策略的一部分,并以某种自动化的方式实现。根据安全级别,对于高度敏感的通信,SSH key pair 可能只使用一次。这样做可以消除因存储密钥而导致的任何风险。但是,更常见的做法是将 SSH 凭证存储一段时间,并设置一个不会给用户带来过多负担的间隔。通常,时间间隔为 3 个月。

有两种方法用于执行 SSH 密钥轮换:

  • 在控制台上,您可以上传新的 SSH 公钥并删除现有的 SSH 公钥。

  • 使用 API,您可以使用删除公有密钥API 以删除用户的安全外壳 (SSH) 公有密钥和导入公钥API 将新的安全命令行管理程序 (SSH) 公钥添加到用户帐户。

Console

在控制台中执行密钥轮换

  1. 打开Amazon Transfer Family控制台https://console.aws.amazon.com/transfer/.

  2. 导航到服务器页.

  3. Server ID列以查看Server 详细信息页.

  4. Nublic用户中,选中要轮换其 SSH 公有密钥的用户的复选框,然后选择操作,然后选择添加关键帧查看添加关键帧页.

    选择用户名可查看用户详细信息页面,然后选择添加 SSH 公有密钥查看添加关键帧页.

  5. 输入新的 SSH 公钥,然后选择添加关键帧.

    重要

    SSH 公有密钥的格式为ssh-rsa <string>.

    您将返回到用户详细信息页面上,您刚刚输入的新 SSH 公有密钥将显示在SSH 公有密钥部分。

  6. 选中要删除的旧密钥的复选框,然后选择Delete.

  7. 通过输入单词确认删除操作delete,然后选择Delete.

API

使用 API 执行密钥轮换

  1. 在 macOS、Linux 或 UNIX 操作系统上,打开命令终端。

  2. 输入以下命令检索要删除的 SSH 密钥:

    aws transfer describe-user --server-id='serverID' --user-name='username'

    其中ServerId是传输系列服务器的 Transfer Family 务器 ID,username是您的用户名。

    该命令返回有关用户的详细信息。将"SshPublicKeyId":字段:您需要在此过程的后续步骤中输入此值。

    "SshPublicKeys": [ { "SshPublicKeyBody": "public-key", "SshPublicKeyId": "keyID", "DateImported": 1621969331.072 } ],

  3. 接下来,为您的用户导入新的 SSH 密钥。在提示符中,输入以下命令:

    aws transfer import-ssh-public-key --server-id='serverID' --user-name='username' --ssh-public-key-body=’publickey

    其中publickey是新公钥的指纹。

  4. 最后,运行以下命令删除旧密钥:

    aws transfer delte-ssh-public-key --server-id='serverID' --user-name='username' --ssh-public-key-body=’publickey-from-step-1

    其中公共信息从步骤 1是您在此过程的步骤 1 中复制的键值。