第 12 章 配置与 ssh 系统角色的安全通信

作为管理员,您可以使用 sshd 系统角色配置 SSH 服务器和 ssh 系统角色,以使用 Ansible Core 软件包同时在任意数量的 RHEL 系统中配置 SSH 客户端。

12.1. ssh 服务器系统角色变量

sshd 系统角色 playbook 中,您可以根据您的首选项和限制定义 SSH 配置文件的参数。

如果您没有配置这些变量,则系统角色会生成与 RHEL 默认值匹配的 sshd_config 文件。

在所有情况下,布尔值在 sshd 配置中都正确呈现为 yesno。您可以使用 list 来定义多行配置项。例如:

sshd_ListenAddress:
  - 0.0.0.0
  - '::'

呈现为:

ListenAddress 0.0.0.0
ListenAddress ::

sshd 系统角色的变量

sshd_enable
如果设置为 False,则角色将被完全禁用。默认值为 True
sshd_skip_defaults
如果设置为 True,则系统角色不会应用默认值。相反,您可以使用 sshd dict 或 sshd_Key 变量来指定完整的配置默认值集合。默认值为 False
sshd_manage_service
如果设置为 False,则服务不会被管理,这意味着它不会在引导时启用,也不会启动或重新加载。除非在容器内或 AIX 中运行,否则默认为 True,因为 Ansible 服务模块目前不支持对 AIX 的 启用
sshd_allow_reload
如果设置为 False,则sshd 不会在配置更改后重新加载。这可帮助进行故障排除。要应用更改后的配置,请手动重新加载 sshd。默认为与 sshd_manage_service 相同的值,但 AIX 除外,其中 sshd_manage_service 默认为 False,但 sshd_allow_reload 默认为 True
sshd_install_service

如果设置为 True,该角色将为 sshd 服务安装服务文件。这会覆盖操作系统中提供的文件。除非您要配置第二个实例,否则不要设置为 True,您也可以更改 sshd_service 变量,。默认值为 False

该角色使用以下变量指向的文件作为模板:

sshd_service_template_service (default: templates/sshd.service.j2)
sshd_service_template_at_service (default: templates/sshd@.service.j2)
sshd_service_template_socket (default: templates/sshd.socket.j2)
sshd_service
此变量更改 sshd 服务名称,这对于配置第二个 sshd 服务实例非常有用。
sshd

包含配置的字典。例如:

sshd:
  Compression: yes
  ListenAddress:
    - 0.0.0.0
sshd_OptionName

您可以使用由 sshd_ 前缀和选项名称而不是 dict 组成的简单变量来定义选项。简单的变量覆盖 sshd 字典中的值。例如:

sshd_Compression: no
sshd_matchsshd_match_1sshd_match_9
字典列表或 只是匹配部分的字典。请注意,这些变量不会覆盖 sshd 字典中定义的匹配块。所有源都会反映在生成的配置文件中。

sshd 系统角色的二级变量

您可以使用这些变量来覆盖与每个支持的平台对应的默认值。

sshd_packages
您可以使用此变量来覆盖安装的软件包的默认列表。
sshd_config_ownersshd_config_groupsshd_config_mode
您可以使用这些变量为该角色生成的 openssh 配置文件设置所有权和权限。
sshd_config_file
此角色保存生成的 openssh 服务器配置的路径。
sshd_config_namespace

此变量的默认值为 null,这意味着角色定义配置文件的整个内容,包括系统默认值。或者,您也可以使用此变量从其他角色或从不支随时可访问目录的系统上的单个 playbook 中的多个位置调用此角色。sshd_skip_defaults 变量将被忽略,本例中没有使用系统默认值。

设置此变量时,角色会将您指定的配置放置在给定命名空间下的现有配置段中。如果您的场景需要多次应用角色,您需要为每个应用程序选择不同的命名空间。

注意

openssh 配置文件的限制仍然适用。例如,对大多数配置选项,只有配置文件中指定的第一个选项有效。

从技术上讲,角色会将段放在"Match all"块中,除非它们包含其他匹配块,以确保无论现有配置文件中之前匹配的块如何都将应用它们。这允许从不同角色调用中配置任何不冲突的选项。

sshd_binary
opensshsshd 可执行文件的路径。
sshd_service
sshd 服务的名称。默认情况下,此变量包含目标平台所使用的 sshd 服务的名称。当角色使用 sshd_install_service 变量时,您还可以使用它来设置自定义 sshd 服务的名称。
sshd_verify_hostkeys
默认值为 auto。当设置为 auto 时,这将列出生成的配置文件中存在的所有主机密钥,并生成所有不存在的路径。此外,权限和文件所有者被设置为默认值。如果该角色用于部署阶段来确保服务能够在第一次尝试时启动,则这非常有用。若要禁用此检查,可将此变量设置为空列表 []
sshd_hostkey_owner,sshd_hostkey_group,sshd_hostkey_mode
使用这些变量来设置 sshd_verify_hostkeys 的主机密钥的所有权和权限。
sshd_sysconfig
在基于 RHEL 的系统上,这个变量配置 sshd 服务的其它详细信息。如果设置为 true,则此角色还会根据以下配置来管理 /etc/sysconfig/sshd 配置文件:默认值为 false
sshd_sysconfig_override_crypto_policy
在 RHEL 中,当设为 true 时,这个变量会覆盖系统范围的加密策略。默认值为 false
sshd_sysconfig_use_strong_rng
在基于 RHEL 的系统上,此变量可以强制 sshd 使用给定的字节数作为参数来重新设置 openssl 随机数字生成器的种子。默认值为 0,它会禁用此功能。如果系统没有硬件随机数字生成器,请不要打开此选项。