22.5. 管理用户的公共 SSH 密钥
通过身份管理,您可以将 SSH 公共密钥上传到用户条目。有权访问对应私有 SSH 密钥的用户可以使用
ssh
登录 IdM 机器,而无需使用 Kerberos 凭据。如果正确配置了 pam_krb5
,或者 SSSD 用作 IdM 服务器的身份提供程序,用户在登录后收到 Kerberos ticket-granting ticket (TGT);更多详情,请参阅 “自动获取 Kerberos Tickets”一节。
请注意,如果用户从不可用其 SSH 私钥文件的计算机登录,则用户仍可提供其 Kerberos 凭据进行身份验证。
自动缓存和检索 SSH 密钥
在 IdM 服务器或客户端安装过程中,SSSD 会在机器上自动配置,以缓存和检索用户和主机 SSH 密钥。这允许 IdM 作为 SSH 密钥的通用集中式存储库。
如果在安装过程中没有配置服务器或客户端,您可以在机器上手动配置 SSSD。有关如何执行此操作的详情请参考 第 22.6 节 “配置 SSSD 为 OpenSSH 服务提供缓存”。请注意,SSSD 缓存 SSH 密钥需要本地机器上的管理权限。
SSH 密钥格式要求
IdM 接受以下两种 SSH 密钥格式:
密钥文件(如
id_rsa.pub
)包含三个部分:密钥类型、密钥本身以及附加注释或标识符。在以下示例中,密钥类型是 RSA,注释将密钥与 client.example.com
主机名相关联:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMM4xPu54Kf2dx7C4Ta2F7vnIzuL1i6P21TTKniSkjFuA+r qW06588e7v14Im4VejwnNk352gp49A62qSVOzp8IKA9xdtyRmHYCTUvmkcyspZvFRI713zfRKQVFyJOqHmW/m dCmak7QBxYou2ELSPhH3pe8MYTQIulKDSu5Zbsrqedg1VGkSJxf7mDnCSPNWWzAY9AFB9Lmd2m2xZmNgVAQEQ nZXNMaIlroLD/51rmMSkJGHGb1O68kEq9Z client.example.com
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMM4xPu54Kf2dx7C4Ta2F7vnIzuL1i6P21TTKniSkjFuA+r
qW06588e7v14Im4VejwnNk352gp49A62qSVOzp8IKA9xdtyRmHYCTUvmkcyspZvFRI713zfRKQVFyJOqHmW/m
dCmak7QBxYou2ELSPhH3pe8MYTQIulKDSu5Zbsrqedg1VGkSJxf7mDnCSPNWWzAY9AFB9Lmd2m2xZmNgVAQEQ
nZXNMaIlroLD/51rmMSkJGHGb1O68kEq9Z client.example.com
将密钥上传到 IdM 时,您可以上传所有三个关键部分,或者只上传密钥本身。如果您只上传密钥本身,IdM 会自动从上传的密钥中识别密钥类型,如 RSA 或 DSA。
22.5.1. 生成 SSH 密钥 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
您可以使用 OpenSSH
ssh-keygen
工具生成 SSH 密钥。实用程序显示有关公钥位置的信息。例如:
要上传用户的 SSH 密钥,请使用存储在显示文件中的公钥字符串。
22.5.2. 上传用户 SSH 密钥 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
22.5.2.1. Web UI:上传用户 SSH 密钥 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
- 选择
。 - 单击要编辑的用户的名称。
- 在 Account Settings 区域的 Settings 选项卡下,点 SSH 公钥:添加。
图 22.9. 帐户设置中的 SSH 公钥
- 粘贴为 Base 64 编码的公钥字符串,然后单击。
图 22.10. 在公钥中粘贴
- 点页面顶部的 Save。
22.5.2.2. 命令行:上传用户 SSH 密钥 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
使用 ipa user-mod 命令,并使用
--sshpubkey
选项传递 Base 64 编码的公钥字符串。
例如,上传密钥类型、密钥本身和主机名标识符:
ipa user-mod user --sshpubkey="ssh-rsa AAAAB3Nza...SNc5dv== client.example.com"
$ ipa user-mod user --sshpubkey="ssh-rsa AAAAB3Nza...SNc5dv== client.example.com"
要上传多个密钥,请多次使用
--sshpubkey
。例如,上传两个 SSH 密钥:
--sshpubkey="AAAAB3Nza...SNc5dv==" --sshpubkey="RjlzYQo...ZEt0TAo="
--sshpubkey="AAAAB3Nza...SNc5dv==" --sshpubkey="RjlzYQo...ZEt0TAo="
注意
您可以使用命令重定向并指向包含 键的文件,而不是手动将密钥粘贴到命令行中。例如:
ipa user-mod user --sshpubkey="$(cat ~/.ssh/id_rsa.pub)" --sshpubkey="$(cat ~/.ssh/id_rsa2.pub)"
$ ipa user-mod user --sshpubkey="$(cat ~/.ssh/id_rsa.pub)" --sshpubkey="$(cat ~/.ssh/id_rsa2.pub)"
22.5.3. 删除用户密钥 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
删除 SSH 密钥:
- 使用 Web UI,请参阅 第 22.5.3.1 节 “Web UI:删除用户 SSH 密钥”
- 使用命令行,请查看 第 22.5.3.2 节 “命令行:删除用户 SSH 密钥”
22.5.3.1. Web UI:删除用户 SSH 密钥 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
- 选择
。 - 单击要编辑的用户的名称。
- 在 Account Settings 区域的 Settings 选项卡下,单击您要删除的密钥旁边的 Delete。
图 22.11. 删除用户 SSH 公钥
- 点页面顶部的 Save。
22.5.3.2. 命令行:删除用户 SSH 密钥 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
要删除分配给用户帐户的所有 SSH 密钥,请在 ipa user-mod 命令中添加
--sshpubkey
选项,而不指定任何密钥:
ipa user-mod user --sshpubkey=
$ ipa user-mod user --sshpubkey=
如果您只想删除特定的 SSH 密钥或密钥,请使用
--sshpubkey
选项指定您要保留的密钥或密钥。
注意
此命令不会立即从缓存中删除 SSH 密钥。使用默认缓存超时值(
entry_cache_timeout = 5400
)时,密钥会在缓存中保留 1 小时和半小时。