linux-system-roles.ssh

ssh

Ansible 角色用于管理 SSH 客户端配置。

要求

该角色应该能在任何提供 openssh 客户端并支持 Ansible 的系统上工作。此角色已在以下系统上测试:

  • RHEL/CentOS 6、7、8、9
  • Fedora
  • Debian
  • Ubuntu

集合要求

为了管理 rpm-ostree 系统,该角色需要来自外部集合的模块。请使用以下命令安装它们:

ansible-galaxy collection install -vv -r meta/collection-requirements.yml

角色变量

默认情况下,该角色不会修改系统配置,并生成与操作系统默认设置相匹配的全局 ssh_config(生成的配置不保留注释和选项的顺序)。

ssh_user

默认值为 (null),该角色将修改所有用户的全局配置。其他值将被解释为用户名,角色将修改给定用户的 ~/.ssh/config 中存储的每个用户的配置。用户需要在调用此角色之前存在,否则将失败。

ssh_skip_defaults

默认值为 (auto),角色会写入系统范围的配置文件 /etc/ssh/ssh_config 并保留那里定义的操作系统默认值(true)。当创建了一个 drop-in 配置文件(ssh_drop_in_name!=null)或创建了每个用户的配置文件(ssh_user!=null)时,系统默认配置会自动禁用。

ssh_drop_in_name

定义要放置在系统范围的 drop-in 目录中的 drop-in 配置文件的名称。该名称用于模板 /etc/ssh/ssh_config.d/{name}.conf 中,以引用要修改的配置文件。如果系统不支持 drop-in 目录,设置此选项将使播放失败。默认值为 null(如果系统不支持 drop-in 目录)和 00-ansible(否则)。

建议的格式为 NN-name,其中 NN 是用于排序的两位数字,name 是对文件内容或所有者的任何描述性名称。

ssh dict

包含配置选项及其相应值的字典。请参见下面的示例。

  • ssh_...

可以使用以 ssh_ 为前缀的简单变量而不是上述字典。简单变量将覆盖字典中的值。

ssh_additional_packages

该角色会自动安装大多数常见用例所需的软件包。如果需要安装其他软件包(例如用于基于主机的身份验证的 openssh-keysign),可以在此变量中指定。

ssh_config_file

此角色将写入的配置文件。如果系统支持 drop-in 目录,则默认值由模板 /etc/ssh/ssh_config.d/{name}.conf 定义;否则默认值为 /etc/ssh/ssh_config。如果 ssh_user!=null,则默认值为 ~/.ssh/config

如果即使在支持 drop-in 目录的情况下也要写入 /etc/ssh/ssh_config,则将 ssh_drop_in_name 设置为 null

ssh_config_owner, ssh_config_group, ssh_config_mode

创建的配置文件的所有者、组和模式。默认情况下,文件由 root:root 拥有,模式为 0644,除非 ssh_user!=null。在这种情况下,模式为 0600,所有者和组由 ssh_user 变量给定的用户名派生。

ssh_backup

如果设置为 false,则不会备份原始的 ssh_config 文件。默认值为 true

ssh_transactional_update_reboot_ok

此变量用于处理事务更新所需的重启。如果事务更新需要重启,角色将在 ssh_transactional_update_reboot_ok 设置为 true 时继续重启。如果设置为 false,则角色会通知用户需要重启,以便自定义处理重启需求。如果未设置此变量,角色将因确保重启要求未被忽视而失败。

示例播放书

以下播放书配置 root 用户在其主目录中的 SSH 配置,以使用压缩、控制主 multiplexing,并在 "match final all" 块中启用 GSSAPI 身份验证。此外,它创建了“example”的别名,用于以用户 somebody 连接到 example.com 主机。最后一行禁用 X11 转发。

- name: 管理 ssh 客户端
  hosts: all
  tasks:
  - name: 配置 ssh 客户端
    include_role:
      name: linux-system-roles.ssh
    vars:
      ssh_user: root
      ssh:
        Compression: true
        ControlMaster: auto
        ControlPath: ~/.ssh/.cm%C
        Match:
          - Condition: "final all"
            GSSAPIAuthentication: true
        Host:
          - Condition: example
            Hostname: example.com
            User: somebody
      ssh_ForwardX11: false

更多示例请参阅 examples/ 目录。

rpm-ostree

请参见 README-ostree.md

许可

LGPLv3,更多信息请参见 LICENSE 文件。

作者信息

Jakub Jelen, 2021 - 2023