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

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

2.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 字典或 sshd_<OptionName> 变量来指定配置默认值的完整集合。默认值为 false
sshd_manage_service
如果设置为 false,则不会管理服务,这意味着它不会在引导时启用,且不会启动或重新加载。除非在容器内或 AIX 中运行,否则默认为 true,因为 Ansible 服务模块目前不支持对 AIX enabled
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_config (5) 列出 sshd 字典的所有选项。

sshd_<OptionName>

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

sshd_Compression: no

sshd_config (5) 列出 sshd 的所有选项。

sshd_manage_firewall

如果您使用与默认端口 22 不同的端口,请将此变量设置为 true。当设置为 true 时,sshd 角色使用 firewall 角色自动管理端口访问。

注意

sshd_manage_firewall 变量只能添加端口。它不能删除端口。要删除端口,请直接使用 firewall 系统角色。有关使用 firewall 系统角色管理端口的更多信息,请参阅 使用系统角色配置端口

sshd_manage_selinux

如果您使用与默认端口 22 不同的端口,请将此变量设置为 true。当设置为 true 时,sshd 角色使用 selinux 角色自动管理端口访问。

注意

sshd_manage_selinux 变量只能添加端口。它不能删除端口。要删除端口,请直接使用 selinux 系统角色。

sshd_matchsshd_match_1sshd_match_9
字典列表或只是 Match 部分的字典。请注意,这些变量不会覆盖 sshd 字典中定义的匹配块。所有源都会反映在生成的配置文件中。
sshd_backup
当设置为 false 时,原始 sshd_config 文件不会被备份。默认为 true

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 8 和更早版本的系统上,此变量配置 sshd 服务的额外详情。如果设置为 true,则此角色还根据 sshd_sysconfig_override_crypto_policysshd_sysconfig_use_strong_rng 变量管理 /etc/sysconfig/sshd 配置文件。默认值为 false
sshd_sysconfig_override_crypto_policy

在 RHEL 8 中,将其设置为 true 允许使用 sshd 字典中的以下配置选项或以 sshd_<OptionName> 格式覆盖系统范围的加密策略:

  • Ciphers
  • MACs
  • GSSAPIKexAlgorithms
  • GSSAPIKeyExchange (FIPS-only)
  • KexAlgorithms
  • HostKeyAlgorithms
  • PubkeyAcceptedKeyTypes
  • CASignatureAlgorithms

    默认值为 false

    在 RHEL 9 中,这个变量没有作用。反之,您可以使用 sshd 字典中的以下配置选项或 sshd_<OptionName> 格式来覆盖系统范围的加密策略:

  • Ciphers
  • MACs
  • GSSAPIKexAlgorithms
  • GSSAPIKeyExchange (FIPS-only)
  • KexAlgorithms
  • HostKeyAlgorithms
  • PubkeyAcceptedAlgorithms
  • HostbasedAcceptedAlgorithms
  • CASignatureAlgorithms
  • RequiredRSASize

    如果您将这些选项输入到 sshd_config_file 变量中定义的置入目录中的自定义配置文件中,请使用按字典顺序在 /etc/ssh/sshd_config.d/50-redhat.conf 文件之前包括加密策略的文件名。

sshd_sysconfig_use_strong_rng
在基于 RHEL 8 和更早版本的系统上,此变量可以强制 sshd 以给定的字节数作为参数来为 openssl 随机数字生成器重新生成种子。默认值为 0,它会禁用此功能。如果系统没有硬件随机数字生成器,请不要打开此选项。