calidaedev.authorized_keys
授权密钥
通过 authorized_key
Ansible 模块管理 SSH 授权密钥。
角色变量
默认变量:
authorized_keys_present: {root: []}
authorized_keys_banned: []
authorized_keys_exclusive: {}
authorized_keys_present
可用于列出每个用户在每台主机上的授权密钥。默认情况下,包括没有密钥的 root 用户。
authorized_keys_banned
可用于删除 authorized_keys_present
中任意用户的一组授权密钥。可以在密钥轮换或泄露,或其发行者已被撤销所有访问权限时,跨所有清单删除密钥。默认情况下,它会删除 root 用户在这里列出的所有密钥。
如果需要更细粒度和精确的控制,可以使用 authorized_keys_exclusive
。该选项会安装指定的密钥,同时删除服务器上找到的任何额外密钥,从而在配置漂移的情况下提供一致的访问控制。如果密钥列表为空,此选项 不会 删除给定用户的所有密钥,以避免丢失所有 SSH 访问。
示例剧本
简单示例:
# example.yml
- hosts: web_servers
roles:
- calidae.authorized_keys
vars:
authorized_keys_present:
root:
- '{{ lookup("file", "public_keys/alice") }}'
ubuntu:
- '{{ lookup("file", "public_keys/alice") }}'
- '{{ lookup("file", "public_keys/beth") }}'
authorized_keys_banned:
- '{{ lookup("file", "public_keys/alice_old") }}'
- '{{ lookup("file", "public_keys/claire") }}'
- 'ssh-rsa AAAAB3Nza..(省略一些字节)..bCRkh7ReBbpx daisy@office'
- hosts: db_servers
roles:
- calidae.authorized_keys
vars:
authorized_keys_exclusive:
root:
- '{{ lookup("file", "public_keys/alice") }}'
- '{{ lookup("file", "public_keys/emilie") }}'
ubuntu: [] # 这不会为该用户添加或删除任何密钥!
ansible-playbook example.yml --diff --check
高级示例:
将您的公钥放在自定义角色的文件目录中,该角色依赖于 calidae.authorized_keys。将 authorized_keys_banned
设为角色变量(而非默认值),这样不易被覆盖。根据每台主机所需的控制,使用 authorized_keys_present
或 authorized_keys_exclusive
来添加密钥。
# roles/myorg.authorized_keys/meta/main.yml
dependencies:
- calidae.authorized_keys
# roles/myorg.authorized_keys/vars/main.yml
alice: '{{ lookup("file", "public_keys/alice") }}'
beth: '{{ lookup("file", "public_keys/beth") }}'
claire: '{{ lookup("file", "public_keys/claire") }}'
daisy: 'ssh-rsa AAAAB3Nza..(省略一些字节)..bCRkh7ReBbpx daisy@office'
emilie: '{{ lookup("file", "public_keys/emilie") }}'
authorized_keys_banned:
- '{{ daisy }}'
# group_vars/web_servers.yml
authorized_keys_present:
root:
- '{{ alice }}'
ubuntu:
- '{{ beth }}'
- '{{ claire }}'
# group_vars/sftp.yml
authorized_keys_present:
root:
- '{{ alice }}'
- '{{ emilie }}'
customer:
- 'ssh-rsa AAAAB3Nza..(省略一些字节)..t1F0Q5Y2AN customer@somesystem'
# group_vars/db_servers.yml
authorized_keys_exclusive:
root:
- '{{ alice }}'
# plays/site.yml
- hosts: all
roles:
- myorg.authorized_keys
ansible-playbook plays/site.yml
许可证
BSD
作者信息
Calidae https://www.calidae.com
安装
ansible-galaxy install calidaedev.authorized_keys
许可证
Unknown
下载
9.4k
拥有者
Calidae Digital Craftsmanship