2.4. 使用 ssh 系统角色配置 OpenSSH 客户端

您可以通过运行 Ansible playbook,使用 ssh 系统角色配置多个 SSH 客户端。

注意

您可以将 ssh 系统角色用于更改 SSH 和 SSHD 配置的其他系统角色,如身份管理 RHEL 系统角色。要防止配置被覆盖,请确保 ssh 角色使用置入目录(默认为 RHEL 8)。

先决条件

  • 访问一个或多个 受管节点 的权限,这是您要使用 ssh 系统角色配置的系统。
  • 控制节点 的访问和权限,这是 Red Hat Ansible Core 配置其他系统的系统。

    在控制节点上:

    • ansible-corerhel-system-roles 软件包已安装 。
重要

RHEL 8.0-8.5 提供对基于 Ansible 的自动化需要 Ansible Engine 2.9 的独立 Ansible 存储库的访问权限。Ansible Engine 包含命令行实用程序,如 ansibleansible-playbook、连接器(如 dockerpodman )以及许多插件和模块。有关如何获取和安装 Ansible Engine 的详情,请参考 如何下载和安装 Red Hat Ansible Engine 知识库文章。

RHEL 8.6 和 9.0 引入了 Ansible Core(作为 ansible-core 软件包提供),其中包含 Ansible 命令行工具、命令以及小型内置 Ansible 插件。RHEL 通过 AppStream 软件仓库提供此软件包,它有一个有限的支持范围。如需更多信息,请参阅 RHEL 9 和 RHEL 8.6 及更新的 AppStream 软件仓库文档中的 Ansible Core 软件包的支持范围

  • 列出受管节点的清单文件。

流程

  1. 使用以下内容创建一个新的 playbook.yml 文件:

    ---
    - hosts: all
      tasks:
      - name: "Configure ssh clients"
        include_role:
          name: rhel-system-roles.ssh
        vars:
          ssh_user: root
          ssh:
            Compression: true
            GSSAPIAuthentication: no
            ControlMaster: auto
            ControlPath: ~/.ssh/.cm%C
            Host:
              - Condition: example
                Hostname: example.com
                User: user1
          ssh_ForwardX11: no

    此 playbook 使用以下配置在受管节点上配置 root 用户的 SSH 客户端首选项:

    • 压缩已启用。
    • ControlMaster 多路复用设置为 auto
    • 连接到 example.com 主机的example 别名是 user1
    • example 主机别名已创建,它表示使用 user1 用户名连接到 example.com 主机。
    • X11 转发被禁用。

    另外,您还可以根据您的偏好修改这些变量。如需了解更多详细信息,请参阅 ssh 系统角色变量

  2. 可选:验证 playbook 语法。

    # ansible-playbook --syntax-check path/custom-playbook.yml
  3. 在清单文件上运行 playbook:

    # ansible-playbook -i inventory_file path/custom-playbook.yml

验证

  • 通过在文本编辑器中打开 SSH 配置文件来验证受管节点是否具有正确的配置,例如:

    # vi ~root/.ssh/config

    在应用了上述示例 playbook 后,配置文件应具有以下内容:

    # Ansible managed
    Compression yes
    ControlMaster auto
    ControlPath ~/.ssh/.cm%C
    ForwardX11 no
    GSSAPIAuthentication no
    Host example
      Hostname example.com
      User user1