24.3. 对非独占配置使用 sshd RHEL 系统角色
默认情况下,应用 sshd
RHEL 系统角色会覆盖整个配置。如果您之前调整了配置,例如使用不同的 RHEL 系统角色或 playbook,则这可能会出现问题。要只对所选配置选项应用 sshd
RHEL 系统角色,同时保留其他选项,您可以使用非独占配置。
您可以应用非独占配置:
- 在 RHEL 8 及更早版本中使用配置片段。
-
在 RHEL 9 及更高版本中使用置入目录中的文件。默认配置文件已放入随时可访问的目录中,存为
/etc/ssh/sshd_config.d/00-ansible_system_role.conf
。
先决条件
- 您已准备好控制节点和受管节点。
- 您以可在受管主机上运行 playbook 的用户身份登录到控制节点。
-
您用于连接到受管节点的帐户对它们具有
sudo
权限。
流程
创建一个包含以下内容的 playbook 文件,如
~/playbook.yml
:对于运行 RHEL 8 或更早版本的受管节点:
--- - name: Non-exclusive sshd configuration hosts: managed-node-01.example.com tasks: - name: Configure SSHD to accept environment variables ansible.builtin.include_role: name: redhat.rhel_system_roles.sshd vars: sshd_config_namespace: <my_application> sshd_config: # Environment variables to accept AcceptEnv: LANG LS_COLORS EDITOR
--- - name: Non-exclusive sshd configuration hosts: managed-node-01.example.com tasks: - name: Configure SSHD to accept environment variables ansible.builtin.include_role: name: redhat.rhel_system_roles.sshd vars: sshd_config_namespace: <my_application> sshd_config: # Environment variables to accept AcceptEnv: LANG LS_COLORS EDITOR
Copy to Clipboard Copied! 对于运行 RHEL 9 或更高版本的受管节点:
- name: Non-exclusive sshd configuration hosts: managed-node-01.example.com tasks: - name: Configure sshd to accept environment variables ansible.builtin.include_role: name: redhat.rhel_system_roles.sshd vars: sshd_config_file: /etc/ssh/sshd_config.d/<42-my_application>.conf sshd_config: # Environment variables to accept AcceptEnv: LANG LS_COLORS EDITOR
- name: Non-exclusive sshd configuration hosts: managed-node-01.example.com tasks: - name: Configure sshd to accept environment variables ansible.builtin.include_role: name: redhat.rhel_system_roles.sshd vars: sshd_config_file: /etc/ssh/sshd_config.d/<42-my_application>.conf sshd_config: # Environment variables to accept AcceptEnv: LANG LS_COLORS EDITOR
Copy to Clipboard Copied! 示例 playbook 中指定的设置包括以下内容:
sshd_config_namespace: <my_application>
- 角色将您在 playbook 中指定的配置放在给定命名空间下的现有配置文件中的配置片段中。当从不同上下文运行角色时,您需要选择一个不同的命名空间。
sshd_config_file: /etc/ssh/sshd_config.d/<42-my_application>.conf
-
在
sshd_config_file
变量中,定义sshd
系统角色将配置选项写入其中的.conf
文件。使用两位前缀,例如42-
来指定应用配置文件的顺序。 AcceptEnv:
控制 OpenSSH 服务器(
sshd
)将接受来自客户端的哪些环境变量:-
LANG
:定义语言和区域设置。 -
LS_COLORS
:定义终端中ls
命令的显示颜色方案。 -
EDITOR
: 指定需要打开编辑器的命令行程序的默认文本编辑器。
-
有关 playbook 中使用的角色变量和 OpenSSH 配置选项的详情,请查看控制节点上的
/usr/share/ansible/roles/rhel-system-roles.sshd/README.md
文件和sshd_config (5)
手册页。
验证 playbook 语法:
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.yml
Copy to Clipboard Copied! 请注意,这个命令只验证语法,不能防止错误的、但有效的配置。
运行 playbook:
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.yml
Copy to Clipboard Copied!
验证
验证 SSH 服务器上的配置:
对于运行 RHEL 8 或更早版本的受管节点:
cat /etc/ssh/sshd_config ... BEGIN sshd system role managed block: namespace <my_application> Match all AcceptEnv LANG LS_COLORS EDITOR END sshd system role managed block: namespace <my_application>
# cat /etc/ssh/sshd_config ... # BEGIN sshd system role managed block: namespace <my_application> Match all AcceptEnv LANG LS_COLORS EDITOR # END sshd system role managed block: namespace <my_application>
Copy to Clipboard Copied! 对于运行 RHEL 9 或更高版本的受管节点:
cat /etc/ssh/sshd_config.d/42-my_application.conf Ansible managed # AcceptEnv LANG LS_COLORS EDITOR
# cat /etc/ssh/sshd_config.d/42-my_application.conf # Ansible managed # AcceptEnv LANG LS_COLORS EDITOR
Copy to Clipboard Copied!