1.8. 使用 ssh 系统角色配置安全通信
作为管理员,您可以使用 sshd
系统角色配置 SSH 服务器,并使用 ssh
系统角色,通过使用 Red Hat Ansible Automation Platform 同时在任意数量的 RHEL 系统上配置 SSH 客户端。
1.8.1. sshd RHEL 系统角色如何将 playbook 中的设置映射到配置文件 复制链接链接已复制到粘贴板!
在 sshd
RHEL 系统角色 playbook 中,您可以为服务器 SSH 配置文件定义参数。
如果没有指定这些设置,角色会生成一个与 RHEL 默认值匹配的 sshd_config
文件。
在所有情况下,布尔值会在受管节点上的最终配置中正确呈现为 yes
和 no
。您可以使用列表来定义多行配置项。例如:
sshd_ListenAddress: - 0.0.0.0 - '::'
sshd_ListenAddress:
- 0.0.0.0
- '::'
呈现为:
ListenAddress 0.0.0.0 ListenAddress ::
ListenAddress 0.0.0.0
ListenAddress ::
1.8.2. 使用 sshd RHEL 系统角色配置 OpenSSH 服务器 复制链接链接已复制到粘贴板!
您可以使用 sshd
RHEL 系统角色配置多个 OpenSSH 服务器。这些措施通过以下方式来确保远程用户的安全通信环境:
- 管理来自远程客户端的传入 SSH 连接
- 凭证验证
- 保护数据传输和命令执行
您可以将 sshd
RHEL 系统角色与其他更改 SSHD 配置的 RHEL 系统角色(如 Identity Management RHEL 系统角色)一起使用。要防止配置被覆盖,请确保 sshd
RHEL 系统角色使用命名空间(RHEL 8 及更早版本)或置入目录(RHEL 9)。
先决条件
- 您已准备好控制节点和受管节点。
- 您以可在受管主机上运行 playbook 的用户身份登录到控制节点。
-
您用于连接到受管节点的帐户对它们具有
sudo
权限。
流程
创建一个包含以下内容的 playbook 文件,如
~/playbook.yml
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例 playbook 中指定的设置包括如下:
PasswordAuthentication: yes|no
-
控制 OpenSSH 服务器(
sshd
)是否接受来自使用用户名和密码组合的客户端的身份验证。 Match:
-
匹配块只允许使用来自子网
192.0.2.0/24
的使用密码的root
用户登录。
有关 playbook 中使用的角色变量和 OpenSSH 配置选项的详情,请查看控制节点上的
/usr/share/ansible/roles/rhel-system-roles.sshd/README.md
文件和sshd_config (5)
手册页。验证 playbook 语法:
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,这个命令只验证语法,不能防止错误的、但有效的配置。
运行 playbook:
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
登录到 SSH 服务器:
ssh <username>@<ssh_server>
$ ssh <username>@<ssh_server>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 SSH 服务器上
sshd_config
文件的内容:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查您是否可以以 root 用户身份从
192.0.2.0/24
子网连接到服务器:确定您的 IP 地址:
hostname -I
$ hostname -I 192.0.2.1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果 IP 地址在
192.0.2.1
-192.0.2.254
范围内,您可以连接到服务器。以
root
用户身份连接到服务器:ssh root@<ssh_server>
$ ssh root@<ssh_server>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.8.3. ssh RHEL 系统角色如何将 playbook 中的设置映射到配置文件 复制链接链接已复制到粘贴板!
在 ssh
RHEL 系统角色 playbook 中,您可以为客户端 SSH 配置文件定义参数。
如果没有指定这些设置,角色会生成一个与 RHEL 默认值匹配的全局 ssh_config
文件。
在所有情况下,布尔值在受管节点上的最终配置中正确呈现为 yes
或 no
。您可以使用列表来定义多行配置项。例如:
LocalForward: - 22 localhost:2222 - 403 localhost:4003
LocalForward:
- 22 localhost:2222
- 403 localhost:4003
呈现为:
LocalForward 22 localhost:2222 LocalForward 403 localhost:4003
LocalForward 22 localhost:2222
LocalForward 403 localhost:4003
配置选项区分大小写。
1.8.4. 使用 ssh RHEL 系统角色配置 OpenSSH 客户端 复制链接链接已复制到粘贴板!
您可以使用 ssh
RHEL 系统角色配置多个 OpenSSH 客户端。这些措施可通过确保以下内容让本地用户与远程 OpenSSH 服务器建立一个安全连接:
- 安全连接启动
- 凭证置备
- 与 OpenSSH 服务器协商有关用于安全通信渠道的加密方法
- 能够安全地向和从 OpenSSH 服务器发送文件
您可以将 ssh
RHEL 系统角色与更改 SSH 配置的其他系统角色(如 Identity Management RHEL 系统角色)一起使用。要防止配置被覆盖,请确保 ssh
RHEL 系统角色使用置入目录(RHEL 8 及更高版本中的默认设置)。
先决条件
- 您已准备好控制节点和受管节点。
- 您以可在受管主机上运行 playbook 的用户身份登录到控制节点。
-
您用于连接到受管节点的帐户对它们具有
sudo
权限。
流程
创建一个包含以下内容的 playbook 文件,如
~/playbook.yml
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例 playbook 中指定的设置包括如下:
ssh_user: root
-
使用特定配置在受管节点上配置
root
用户的 SSH 客户端首选项。 Compression: true
- 压缩被启用。
ControlMaster: auto
-
ControlMaster 多路复用设置为
auto
。 Host
-
创建别名
example
,来以名为user1
的用户身份连接到server.example.com
主机。 ssh_ForwardX11: no
- X11 转发被禁用。
有关 playbook 中使用的角色变量和 OpenSSH 配置选项的详情,请查看控制节点上的
/usr/share/ansible/roles/rhel-system-roles.ssh/README.md
文件和ssh_config (5)
手册页。验证 playbook 语法:
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,这个命令只验证语法,不能防止错误的、但有效的配置。
运行 playbook:
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
通过显示 SSH 配置文件来验证受管节点是否有正确的配置:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.8.5. 将 sshd RHEL 系统角色用于非独占配置 复制链接链接已复制到粘贴板!
默认情况下,应用 sshd
RHEL 系统角色会覆盖整个配置。如果您之前调整了配置,例如使用不同的 RHEL 系统角色或 playbook,则这可能会出现问题。要只对所选配置选项应用 sshd
RHEL 系统角色,同时保留其他选项,您可以使用非独占配置。
您可以应用非独占配置:
- 在 RHEL 8 及更早版本中使用配置片段。
-
在 RHEL 9 及更高版本中使用置入目录中的文件。默认配置文件已放入随时可访问的目录中,存为
/etc/ssh/sshd_config.d/00-ansible_system_role.conf
。
先决条件
- 您已准备好控制节点和受管节点。
- 您以可在受管主机上运行 playbook 的用户身份登录到控制节点。
-
您用于连接到受管节点的帐户对它们具有
sudo
权限。
流程
创建一个包含以下内容的 playbook 文件,如
~/playbook.yml
:对于运行 RHEL 8 或更早版本的受管节点:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于运行 RHEL 9 或更高版本的受管节点:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例 playbook 中指定的设置包括以下内容:
sshd_config_namespace: <my-application>
- 角色将您在 playbook 中指定的配置放在给定命名空间下的现有配置文件中的配置片段中。当从不同上下文运行角色时,您需要选择一个不同的命名空间。
sshd_config_file: /etc/ssh/sshd_config.d/<42-my-application>.conf
-
在
sshd_config_file
变量中,定义sshd
系统角色将配置选项写入其中的.conf
文件。使用两位前缀,例如42-
来指定应用配置文件的顺序。 AcceptEnv:
控制 OpenSSH 服务器(
sshd
)将接受来自客户端的哪些环境变量:-
LANG
:定义语言和区域设置。 -
LS_COLORS
:定义终端中ls
命令的显示颜色方案。 -
EDITOR
: 指定需要打开编辑器的命令行程序的默认文本编辑器。
-
有关 playbook 中使用的角色变量和 OpenSSH 配置选项的详情,请查看控制节点上的
/usr/share/ansible/roles/rhel-system-roles.sshd/README.md
文件和sshd_config (5)
手册页。
验证 playbook 语法:
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,这个命令只验证语法,不能防止错误的、但有效的配置。
运行 playbook:
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证 SSH 服务器上的配置:
对于运行 RHEL 8 或更早版本的受管节点:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于运行 RHEL 9 或更高版本的受管节点:
cat /etc/ssh/sshd_config.d/42-my-application.conf Ansible managed # AcceptEnv LANG LS_COLORS EDITOR
# cat /etc/ssh/sshd_config.d/42-my-application.conf # Ansible managed # AcceptEnv LANG LS_COLORS EDITOR
Copy to Clipboard Copied! Toggle word wrap Toggle overflow