Red Hat Training

A Red Hat training course is available for RHEL 8

2.2. 使用 sshd RHEL 系统角色配置 OpenSSH 服务器

您可以通过运行 Ansible playbook,使用 sshd 系统角色配置多个 SSH 服务器。

注意

您可以将 sshd 系统角色用于更改 SSH 和 SSHD 配置的其他系统角色,如身份管理 RHEL 系统角色。要防止配置被覆盖,请确保 sshd 角色使用命名空间(RHEL 8 和更早的版本)或 drop-in 目录(RHEL 9)。

前提条件

流程

  1. 创建一个包含以下内容的 playbook 文件,如 ~/playbook.yml

    ---
    - name: SSH server configuration
      hosts: managed-node-01.example.com
      tasks:
        - name: Configure sshd to prevent root and password login except from particular subnet
          ansible.builtin.include_role:
            name: rhel-system-roles.sshd
          vars:
            sshd:
              PermitRootLogin: no
              PasswordAuthentication: no
              Match:
                - Condition: "Address 192.0.2.0/24"
                  PermitRootLogin: yes
                  PasswordAuthentication: yes

    playbook 将受管节点配置为 SSH 服务器,以便:

    • 禁用密码和 root 用户登录
    • 只对子网 192.0.2.0/24 启用密码和 root 用户登录
  2. 验证 playbook 语法:

    $ ansible-playbook --syntax-check ~/playbook.yml

    请注意,这个命令只验证语法,不会防止错误但有效的配置。

  3. 运行 playbook:

    $ ansible-playbook ~/playbook.yml

验证

  1. 登录到 SSH 服务器:

    $ ssh <username>@<ssh_server>
  2. 验证 SSH 服务器中的 sshd_config 文件的内容:

    $ cat /etc/ssh/sshd_config
    ...
    PasswordAuthentication no
    PermitRootLogin no
    ...
    Match Address 192.0.2.0/24
      PasswordAuthentication yes
      PermitRootLogin yes
    ...
  3. 检查您是否可以以 root 用户身份从 192.0.2.0/24 子网连接到服务器:

    1. 确定您的 IP 地址:

      $ hostname -I
      192.0.2.1

      如果 IP 地址在 192.0.2.1 - 192.0.2.254 范围内,您可以连接到服务器。

    2. root 用户身份连接到服务器:

      $ ssh root@<ssh_server>

其他资源

  • /usr/share/ansible/roles/rhel-system-roles.sshd/README.md 文件
  • /usr/share/doc/rhel-system-roles/sshd/ directory