26.2. 使用 sshd RHEL 系统角色配置 OpenSSH 服务器
您可以通过运行 Ansible playbook,使用 sshd
RHEL 系统角色来配置多个 SSH 服务器。
您可以将 sshd
RHEL 系统角色用于更改 SSH 和 SSHD 配置的其他 RHEL 系统角色,如身份管理 RHEL 系统角色。要防止配置被覆盖,请确保 sshd
角色使用命名空间(RHEL 8 和更早的版本)或 drop-in 目录(RHEL 9)。
先决条件
- 您已准备好控制节点和受管节点。
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo
权限。
步骤
创建包含以下内容的 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
用户登录
-
禁用密码和
验证 playbook 语法:
$ ansible-playbook --syntax-check ~/playbook.yml
请注意,这个命令只验证语法,不会防止错误但有效的配置。
运行 playbook:
$ ansible-playbook ~/playbook.yml
验证
登录到 SSH 服务器:
$ ssh <username>@<ssh_server>
验证 SSH 服务器中的
sshd_config
文件的内容:$ cat /etc/ssh/sshd_config ... PasswordAuthentication no PermitRootLogin no ... Match Address 192.0.2.0/24 PasswordAuthentication yes PermitRootLogin yes ...
检查您是否可以以 root 用户身份从
192.0.2.0/24
子网连接到服务器:确定您的 IP 地址:
$ hostname -I 192.0.2.1
如果 IP 地址在
192.0.2.1
-192.0.2.254
范围内,您可以连接到服务器。以
root
用户身份连接到服务器:$ ssh root@<ssh_server>
其他资源
-
/usr/share/ansible/roles/rhel-system-roles.sshd/README.md
文件 -
/usr/share/doc/rhel-system-roles/sshd/
directory