linux-system-roles.ssh
ssh
Ansible 角色用于管理 SSH 客户端配置。
要求
该角色应该能在任何提供 openssh 客户端并支持 Ansible 的系统上工作。此角色已在以下系统上测试:
- RHEL/CentOS 6、7、8、9
- Fedora
- Debian
- Ubuntu
集合要求
为了管理 rpm-ostree
系统,该角色需要来自外部集合的模块。请使用以下命令安装它们:
ansible-galaxy collection install -vv -r meta/collection-requirements.yml
角色变量
默认情况下,该角色不会修改系统配置,并生成与操作系统默认设置相匹配的全局 ssh_config
(生成的配置不保留注释和选项的顺序)。
ssh_user
默认值为 (null
),该角色将修改所有用户的全局配置。其他值将被解释为用户名,角色将修改给定用户的 ~/.ssh/config
中存储的每个用户的配置。用户需要在调用此角色之前存在,否则将失败。
ssh_skip_defaults
默认值为 (auto
),角色会写入系统范围的配置文件 /etc/ssh/ssh_config
并保留那里定义的操作系统默认值(true)。当创建了一个 drop-in 配置文件(ssh_drop_in_name!=null
)或创建了每个用户的配置文件(ssh_user!=null
)时,系统默认配置会自动禁用。
ssh_drop_in_name
定义要放置在系统范围的 drop-in 目录中的 drop-in 配置文件的名称。该名称用于模板 /etc/ssh/ssh_config.d/{name}.conf
中,以引用要修改的配置文件。如果系统不支持 drop-in 目录,设置此选项将使播放失败。默认值为 null
(如果系统不支持 drop-in 目录)和 00-ansible
(否则)。
建议的格式为 NN-name
,其中 NN
是用于排序的两位数字,name
是对文件内容或所有者的任何描述性名称。
ssh dict
包含配置选项及其相应值的字典。请参见下面的示例。
ssh_...
:
可以使用以 ssh_
为前缀的简单变量而不是上述字典。简单变量将覆盖字典中的值。
ssh_additional_packages
该角色会自动安装大多数常见用例所需的软件包。如果需要安装其他软件包(例如用于基于主机的身份验证的 openssh-keysign
),可以在此变量中指定。
ssh_config_file
此角色将写入的配置文件。如果系统支持 drop-in 目录,则默认值由模板 /etc/ssh/ssh_config.d/{name}.conf
定义;否则默认值为 /etc/ssh/ssh_config
。如果 ssh_user!=null
,则默认值为 ~/.ssh/config
。
如果即使在支持 drop-in 目录的情况下也要写入 /etc/ssh/ssh_config
,则将 ssh_drop_in_name
设置为 null
。
ssh_config_owner, ssh_config_group, ssh_config_mode
创建的配置文件的所有者、组和模式。默认情况下,文件由 root:root
拥有,模式为 0644
,除非 ssh_user!=null
。在这种情况下,模式为 0600
,所有者和组由 ssh_user
变量给定的用户名派生。
ssh_backup
如果设置为 false,则不会备份原始的 ssh_config
文件。默认值为 true。
ssh_transactional_update_reboot_ok
此变量用于处理事务更新所需的重启。如果事务更新需要重启,角色将在 ssh_transactional_update_reboot_ok
设置为 true 时继续重启。如果设置为 false,则角色会通知用户需要重启,以便自定义处理重启需求。如果未设置此变量,角色将因确保重启要求未被忽视而失败。
示例播放书
以下播放书配置 root
用户在其主目录中的 SSH 配置,以使用压缩、控制主 multiplexing,并在 "match final all" 块中启用 GSSAPI 身份验证。此外,它创建了“example”的别名,用于以用户 somebody 连接到 example.com 主机。最后一行禁用 X11 转发。
- name: 管理 ssh 客户端
hosts: all
tasks:
- name: 配置 ssh 客户端
include_role:
name: linux-system-roles.ssh
vars:
ssh_user: root
ssh:
Compression: true
ControlMaster: auto
ControlPath: ~/.ssh/.cm%C
Match:
- Condition: "final all"
GSSAPIAuthentication: true
Host:
- Condition: example
Hostname: example.com
User: somebody
ssh_ForwardX11: false
更多示例请参阅 examples/
目录。
rpm-ostree
请参见 README-ostree.md
许可
LGPLv3,更多信息请参见 LICENSE 文件。
作者信息
Jakub Jelen, 2021 - 2023
OpenSSH SSH client configuration
ansible-galaxy install linux-system-roles.ssh