第 12 章 配置与 ssh 系统角色的安全通信
作为管理员,您可以使用 sshd
系统角色配置 SSH 服务器和 ssh
系统角色,以使用 Ansible Core 软件包同时在任意数量的 RHEL 系统中配置 SSH 客户端。
12.1. ssh
服务器系统角色变量
在 sshd
系统角色 playbook 中,您可以根据您的首选项和限制定义 SSH 配置文件的参数。
如果您没有配置这些变量,则系统角色会生成与 RHEL 默认值匹配的 sshd_config
文件。
在所有情况下,布尔值在 sshd
配置中都正确呈现为 yes
和 no
。您可以使用 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_match
和sshd_match_1
到sshd_match_9
-
字典列表或 只是匹配部分的字典。请注意,这些变量不会覆盖
sshd
字典中定义的匹配块。所有源都会反映在生成的配置文件中。
sshd
系统角色的二级变量
您可以使用这些变量来覆盖与每个支持的平台对应的默认值。
sshd_packages
- 您可以使用此变量来覆盖安装的软件包的默认列表。
sshd_config_owner
、sshd_config_group
和sshd_config_mode
-
您可以使用这些变量为该角色生成的
openssh
配置文件设置所有权和权限。 sshd_config_file
-
此角色保存生成的
openssh
服务器配置的路径。 sshd_config_namespace
此变量的默认值为 null,这意味着角色定义配置文件的整个内容,包括系统默认值。或者,您也可以使用此变量从其他角色或从不支随时可访问目录的系统上的单个 playbook 中的多个位置调用此角色。
sshd_skip_defaults
变量将被忽略,本例中没有使用系统默认值。设置此变量时,角色会将您指定的配置放置在给定命名空间下的现有配置段中。如果您的场景需要多次应用角色,您需要为每个应用程序选择不同的命名空间。
注意openssh
配置文件的限制仍然适用。例如,对大多数配置选项,只有配置文件中指定的第一个选项有效。从技术上讲,角色会将段放在"Match all"块中,除非它们包含其他匹配块,以确保无论现有配置文件中之前匹配的块如何都将应用它们。这允许从不同角色调用中配置任何不冲突的选项。
sshd_binary
-
openssh
的sshd
可执行文件的路径。 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
,它会禁用此功能。如果系统没有硬件随机数字生成器,请不要打开此选项。