36.3. 使用 Ansible 配置 Web 控制台,允许用户使用智能卡通过 SSH 向远程主机进行身份验证,而无需再次进行身份验证
在 RHEL web 控制台中登录到用户帐户后,您可以使用 SSH 协议连接到远程机器。您可以使用 servicedelegationrule 和 servicedelegationtarget 模块为受限委托功能配置 Web 控制台,这将启用 SSH 连接,而无需再次进行身份验证。
在示例流程中,web 控制台会话在 myhost.idm.example.com 主机上运行,并将它配置为代表经过身份验证的用户使用 SSH 访问 remote.idm.example.com 主机。
先决条件
-
IdM
admin密码。 -
对
remote.idm.example.com的root访问权限。 - Web 控制台服务在 IdM 中运行。
Web 控制台在用户会话中创建了一个
S4U2ProxyKerberos ticket。要验证它,以 IdM 用户身份登录 Web 控制台,打开Terminal页面,并输入:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您已配置了 Ansible 控制节点以满足以下要求:
- 您使用 Ansible 版本 2.14 或更高版本。
-
您已安装
ansible-freeipa软件包。 - 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了带有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
-
示例假定 secret.yml Ansible vault 存储了
ipaadmin_password。
-
目标节点(这是执行
ansible-freeipa模块的节点)是 IdM 域的一部分,来作为 IdM 客户端、服务器或副本。
流程
进入您的 ~/MyPlaybooks/ 目录:
cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建包含以下内容的
web-console-smart-card-ssh.ymlplaybook:创建确保存在委派目标的任务:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 添加将目标主机添加到委派目标的任务:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 添加一个任务来确保存在委派规则:
- name: Ensure servicedelegationrule delegation-rule is present ipaservicedelegationrule: ipaadmin_password: "{{ ipaadmin_password }}" name: web-console-delegation-rule- name: Ensure servicedelegationrule delegation-rule is present ipaservicedelegationrule: ipaadmin_password: "{{ ipaadmin_password }}" name: web-console-delegation-ruleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 添加一项任务,该任务确保 Web 控制台客户端服务的 Kerberos 主体是受限委派规则的成员:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 添加一个任务,以确保 delegation 规则与 web-console-delegation-target 委派目标关联:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 保存这个文件。
运行 Ansible playbook。指定 playbook 文件、存储保护
secret.yml文件和清单文件的密码的文件:ansible-playbook --vault-password-file=password_file -v -i inventory web-console-smart-card-ssh.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory web-console-smart-card-ssh.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在
remote.idm.example.com上启用 Kerberos 身份验证:-
以
root身份通过 SSH 连接到remote.idm.example.com。 -
打开
/etc/ssh/sshd_config文件进行编辑。 -
通过取消注释
GSSAPIAuthentication no行,并使用GSSAPIAuthentication yes替换它来启用GSSAPIAuthentication。
-
以
在
remote.idm.example.com上重启sshd服务,以便更改生效:systemctl try-restart sshd.service
$ systemctl try-restart sshd.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow