Red Hat Training
A Red Hat training course is available for RHEL 8
2.2. 使用 sshd 系统角色配置 OpenSSH 服务器
您可以通过运行 Ansible playbook,使用 sshd
系统角色配置多个 SSH 服务器。
您可以将 sshd
系统角色用于更改 SSH 和 SSHD 配置的其他系统角色,例如身份管理 RHEL 系统角色。要防止配置被覆盖,请确保 sshd
角色使用命名空间(RHEL 8 和更早的版本)或 drop-in 目录(RHEL 9)。
前提条件
- 您已准备好控制节点和受管节点
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo
权限。 - 要在其上运行此 playbook 的受管节点或受管节点组列在 Ansible 清单文件中。
流程
复制
sshd
系统角色的示例 playbook:# cp /usr/share/doc/rhel-system-roles/sshd/example-root-login-playbook.yml ~/sshd-playbook.yml
使用文本编辑器打开复制的 playbook,例如:
# vim ~/sshd-playbook.yml --- - hosts: all tasks: - name: Configure sshd to prevent root and password login except from particular subnet include_role: name: rhel-system-roles.sshd vars: sshd: # root login and password login is enabled only from a particular subnet 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
用户登录
您可以根据您的偏好修改变量。如需了解更多详细信息,请参阅 sshd 系统角色变量。
-
禁用密码和
验证 playbook 语法:
# ansible-playbook --syntax-check ~/sshd-playbook.yml
请注意,这个命令只验证语法,不会防止错误但有效的配置。
运行 playbook:
# ansible-playbook ~/sshd-playbook.yml ... PLAY RECAP ************************************************** localhost : ok=12 changed=2 unreachable=0 failed=0 skipped=10 rescued=0 ignored=0
验证
登录到 SSH 服务器:
$ ssh user1@10.1.1.1
其中:
-
user1
是 SSH 服务器上的用户。 -
10.1.1.1
是 SSH 服务器的 IP 地址。
-
检查 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@10.1.1.1
其他资源
-
/usr/share/doc/rhel-system-roles/sshd/README.md
文件。 -
ansible-playbook(1)
手册页。