搜索

48.4. 管理主机的公共 SSH 密钥

download PDF

OpenSSH 使用公钥来验证主机。一台机器尝试访问另一台机器,并显示其密钥对。主机第一次验证时,目标机器上的管理员必须手动批准请求。然后,机器将主机的公钥存储在 known_hosts 文件中。每当远程机器尝试再次访问目标机器时,目标机器会检查其 known_hosts 文件,然后将访问权限自动授予批准的主机。

48.4.1. 使用 IdM Web UI 上传主机的 SSH 密钥

身份管理允许您将公共 SSH 密钥上传到主机条目。OpenSSH 使用公钥来验证主机。

先决条件

  • 管理 IdM Web UI 或用户管理员角色的管理员特权。

流程

  1. 您可以从 ~/.ssh/known_hosts 文件检索主机的密钥。例如:

    server.example.com,1.2.3.4 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEApvjBvSFSkTU0WQW4eOweeo0DZZ08F9Ud21xlLy6FOhzwpXFGIyxvXZ52+siHBHbbqGL5+14N7UvElruyslIHx9LYUR/pPKSMXCGyboLy5aTNl5OQ5EHwrhVnFDIKXkvp45945R7SKYCUtRumm0Iw6wq0XD4o+ILeVbV3wmcB1bXs36ZvC/M6riefn9PcJmh6vNCvIsbMY6S+FhkWUTTiOXJjUDYRLlwM273FfWhzHK+SSQXeBp/zIn1gFvJhSZMRi9HZpDoqxLbBB9QIdIw6U4MIjNmKsSI/ASpkFm2GuQ7ZK9KuMItY2AoCuIRmRAdF8iYNHBTXNfFurGogXwRDjQ==

    您还可以生成主机密钥。请参阅 生成 SSH 密钥

  2. 从密钥文件复制公钥。完整的密钥条目的格式是 host name,IP type key==。仅需要 key==,但您可以存储整个条目。要使用条目中的所有元素,请重新安排该条目,以便其具有顺序 type key== [host name,IP]

    cat /home/user/.ssh/host_keys.pub
    ssh-rsa AAAAB3NzaC1yc2E...tJG1PK2Mq++wQ== server.example.com,1.2.3.4
  3. 登录到 IdM Web UI。
  4. 进入到 Identity>Hosts 选项卡。
  5. 单击要编辑的主机名称。
  6. Host Settings 部分中,点 SSH 公钥 Add 按钮。
  7. 将主机的公钥粘贴到 SSH public key 字段。
  8. Set
  9. 点 IdM Web UI 窗口顶部的 Save

验证

  • Hosts Settings 部分下,验证密钥是否列在 SSH public keys 下。

48.4.2. 使用 IdM CLI 上传主机的 SSH 密钥

身份管理允许您将公共 SSH 密钥上传到主机条目。OpenSSH 使用公钥来验证主机。当使用 host-add 或稍后修改条目创建主机时,主机 SSH 密钥被添加到 IdM 中的主机条目中。

请注意,RSA 和 DSA 主机密钥由 ipa-client-install 命令创建,除非在安装脚本中明确禁用了 SSH 服务。

先决条件

  • 管理 IdM 或用户管理员角色的管理员特权。

流程

  1. 使用 --sshpubkey 选项运行 host-mod 命令,将 base64 编码的公钥上传到主机条目。

    因为添加主机密钥会更改主机的 DNS Secure Shell 指纹(SSHFP)记录,因此请使用 --updatedns 选项更新主机的 DNS 条目。例如:

    $ ipa host-mod --sshpubkey="ssh-rsa RjlzYQo==" --updatedns host1.example.com

    实际密钥通常以等号(=)结束,但会更长。

  2. 要上传多个密钥,请输入多个 --sshpubkey 命令行参数:

    --sshpubkey="RjlzYQo==" --sshpubkey="ZEt0TAo=="
    注意

    主机可以有多个公钥。

  3. 上传主机密钥后,将 SSSD 配置为使用身份管理作为其身份域之一,并设置 OpenSSH 以使用 SSSD 工具管理主机密钥,如 为 OpenSSH 服务配置 SSSD 以提供缓存 中所述。

验证

  • 运行 ipa host-show 命令来验证 SSH 公钥是否与指定主机关联:

    $ ipa host-show client.ipa.test
    ...
    SSH public key fingerprint: SHA256:qGaqTZM60YPFTngFX0PtNPCKbIuudwf1D2LqmDeOcuA
                                  client@IPA.TEST (ssh-rsa)
    ...

48.4.3. 使用 IdM Web UI 删除主机的 SSH 密钥

您可以在主机密钥过期或者不再有效后删除主机密钥。按照以下步骤,使用 IdM Web UI 删除单个主机密钥。

先决条件

  • 管理 IdM Web UI 的管理员特权或主机管理员角色。

流程

  1. 登录到 IdM Web UI。
  2. 进入到 Identity>Hosts 选项卡。
  3. 单击要编辑的主机名称。
  4. Host Settings 部分下,点击您要删除的 SSH 公钥旁边的 Delete
  5. 点页面顶部的 Save

验证

  • Host Settings 部分下,验证密钥是否不再列在 SSH public keys 下。

48.4.4. 使用 IdM CLI 删除主机的 SSH 密钥

您可以在主机密钥过期或者不再有效后删除主机密钥。按照以下步骤,使用 IdM CLI 删除单个主机密钥。

先决条件

  • 管理 IdM CLI 的管理员特权或主机管理员角色。

流程

  • 要删除分配给主机帐户的所有 SSH 密钥,请在 ipa host-mod 命令中添加 --sshpubkey 选项,而不指定任何密钥:

    $ kinit admin
    $ ipa host-mod --sshpubkey= --updatedns host1.example.com

    请注意,最好使用 --updatedns 选项来更新主机的 DNS 条目。

如果上传的密钥中不包括类型,则 IdM 将自动从密钥确定密钥类型。

验证

  • 运行 ipa host-show 命令来验证 SSH 公钥是否不再与指定主机关联:

    ipa host-show client.ipa.test
      Host name: client.ipa.test
      Platform: x86_64
      Operating system: 4.18.0-240.el8.x86_64
      Principal name: host/client.ipa.test@IPA.TEST
      Principal alias: host/client.ipa.test@IPA.TEST
      Password: False
      Member of host-groups: ipaservers
      Roles: helpdesk
      Member of netgroups: test
      Member of Sudo rule: test2
      Member of HBAC rule: test
      Keytab: True
      Managed by: client.ipa.test, server.ipa.test
      Users allowed to retrieve keytab: user1, user2, user3
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.