通过使用Ansible,我尝试确保服务器的.ssh/authorized_keys
文件只包含一组给定的ssh密钥。无论安排如何。
lineinfile
)第一部分很简单:
- name: Ensure ssh authorized_keys contains the right users
lineinfile:
path: /root/.ssh/authorized_keys
owner: root
group: root
mode: 0600
state: present
line: '{{ item }}'
with_items:
- ssh-rsa AABBCC112233... root@someserver.com
- ssh-rsa DDEEFF112233... user@anothersomeserver.com
但第二部分看起来更棘手。至少要用简短优雅的代码完成它。
有什么想法吗?
答案 0 :(得分:2)
有authorized_key_module并且有exclusive
选项
但要注意exclusive
不适用于with_items
。
使用类似的东西:
- name: Ensure ssh authorized_keys contains the right users
authorized_key:
user: root
state: present
exclusive: yes
key: '{{ ssh_keys | join("\n") }}'
vars:
ssh_keys:
- ssh-rsa AABBCC112233... root@someserver.com
- ssh-rsa DDEEFF112233... user@anothersomeserver.com
使用前测试!
如果您在文件中有密钥,则可以找到有用的this答案。