48.4. 管理主机的公共 SSH 密钥
OpenSSH 使用公钥来验证主机。一台机器尝试访问另一台机器,并显示其密钥对。主机第一次验证时,目标机器上的管理员必须手动批准请求。然后,机器将主机的公钥存储在 known_hosts
文件中。每当远程机器尝试再次访问目标机器时,目标机器会检查其 known_hosts
文件,然后将访问权限自动授予批准的主机。
48.4.1. 使用 IdM Web UI 上传主机的 SSH 密钥
身份管理允许您将公共 SSH 密钥上传到主机条目。OpenSSH 使用公钥来验证主机。
先决条件
- 管理 IdM Web UI 或用户管理员角色的管理员特权。
流程
您可以从
~/.ssh/known_hosts
文件检索主机的密钥。例如:server.example.com,1.2.3.4 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEApvjBvSFSkTU0WQW4eOweeo0DZZ08F9Ud21xlLy6FOhzwpXFGIyxvXZ52+siHBHbbqGL5+14N7UvElruyslIHx9LYUR/pPKSMXCGyboLy5aTNl5OQ5EHwrhVnFDIKXkvp45945R7SKYCUtRumm0Iw6wq0XD4o+ILeVbV3wmcB1bXs36ZvC/M6riefn9PcJmh6vNCvIsbMY6S+FhkWUTTiOXJjUDYRLlwM273FfWhzHK+SSQXeBp/zIn1gFvJhSZMRi9HZpDoqxLbBB9QIdIw6U4MIjNmKsSI/ASpkFm2GuQ7ZK9KuMItY2AoCuIRmRAdF8iYNHBTXNfFurGogXwRDjQ==
您还可以生成主机密钥。请参阅 生成 SSH 密钥。
从密钥文件复制公钥。完整的密钥条目的格式是
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
- 登录到 IdM Web UI。
-
进入到
Identity>Hosts
选项卡。 - 单击要编辑的主机名称。
-
在
Host Settings
部分中,点 SSH 公钥Add
按钮。 -
将主机的公钥粘贴到
SSH public key
字段。 -
点
Set
。 -
点 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 或用户管理员角色的管理员特权。
流程
使用
--sshpubkey
选项运行host-mod
命令,将 base64 编码的公钥上传到主机条目。因为添加主机密钥会更改主机的 DNS Secure Shell 指纹(SSHFP)记录,因此请使用
--updatedns
选项更新主机的 DNS 条目。例如:$ ipa host-mod --sshpubkey="ssh-rsa RjlzYQo==" --updatedns host1.example.com
实际密钥通常以等号(=)结束,但会更长。
要上传多个密钥,请输入多个 --sshpubkey 命令行参数:
--sshpubkey="RjlzYQo==" --sshpubkey="ZEt0TAo=="
注意主机可以有多个公钥。
- 上传主机密钥后,将 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 的管理员特权或主机管理员角色。
流程
- 登录到 IdM Web UI。
-
进入到
Identity>Hosts
选项卡。 - 单击要编辑的主机名称。
-
在
Host Settings
部分下,点击您要删除的 SSH 公钥旁边的Delete
。 -
点页面顶部的
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