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

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

轮换 SSH 密钥

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

注意

有关使用基础设施即代码的自动 SSH 密钥轮换,请参阅Transfer Family terraform 模块

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

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

  • 使用 API,您可以使用 AP DeleteSshPublicKeyI 删除用户的安全外壳 (SSH) 公钥,使用 ImportSshPublicKeyAPI 向用户账户添加新的安全外壳 (SSH) 公钥,从而更新现有用户。

Console
若要控制台中执行密钥轮换
  1. 打开 Amazon Transfer Family 控制台,网址为https://console.aws.amazon.com/transfer/

  2. 导航至服务器页面。

  3. 选择服务器 ID 列中的标识符以查看服务器详细信息页面。

  4. 用户下,选中要轮换其 SSH 公钥用户的复选框,然后选择操作,然后选择添加密钥以查看添加密钥页面。

    选择用户名以查看用户详细信息页面,然后选择添加 SSH 公钥 以查看添加密钥页面。

  5. 输入新的 SSH 公钥并选择添加密钥

    重要

    SSH 公有密钥格式取决于您生成的密钥的类型。

    • RSA 密钥的格式为 ssh-rsa string

    • 对于 ED25519 密钥,格式为ssh-ed25519 string

    • 对于 ECDSA 密钥,ecdsa-sha2-nistp256 字符串为 ecdsa-sha2-nistp384ecdsa-sha2-nistp521,具体取决于您生成的密钥的大小。然后,先是 string,后跟开头字符串,这与其他秘钥类型类似。

    您将返回用户配置屏幕,您刚刚输入的新 SSH 公钥将出现在 SSH 公钥部分。

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

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

API
若要使用 API 执行密钥轮换
  1. 在 macOS、Linux 或 Unix 操作系统,打开命令终端。

  2. 输入以下命令,以检索要删除的 SSH 密钥。若要使用此命令,请将 serverID 替换为您的 Transfer Family 服务器的服务器 ID,然后将 username 替换为您的用户名。

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

    该命令返回有关此用户的详细信息。复制 "SshPublicKeyId": 字段的内容。您将需要稍后在此程序中输入此值。

    "SshPublicKeys": [ { "SshPublicKeyBody": "public-key", "SshPublicKeyId": "keyID", "DateImported": 1621969331.072 } ],
  3. 接下来,为您的用户导入新 SSH 密钥。在 提示符中,输入以下命令。若要使用此命令,请将 serverID 替换为您的 Transfer Family 服务器的服务器 ID,将 public-key 替换为您的用户名,并将 username 替换为新公钥的指纹。

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

    如果命令成功,则不返回任何输出。

  4. 最后通过运行以下命令删除旧密钥。若要使用此命令,将 serverID 替换为 Transfer Family 服务器的服务器 ID,将 username 替换为您的用户名,将 keyID-from-step-2 替换为您在此程序第 2 步中复制的秘钥 ID 值。

    aws transfer delete-ssh-public-key --server-id='serverID' --user-name='username' --ssh-public-key-id='keyID-from-step-2'
  5. (可选)要确认旧密钥是否存在,请重复第 2 步。