You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Ansible为每个用户映射专属RSA公钥?

为每个用户映射特定RSA公钥的Ansible实现

要给每个用户分配对应的专属RSA公钥,你需要调整变量结构,将用户名与密钥绑定,再通过循环完成批量配置。

1. 重构用户变量

把原来单纯的用户名列表,改成包含用户名和对应公钥的字典列表,让每个用户的信息成对关联:

vars:
  users:
    - name: "paul"
      authorized_key: 'ssh-rsa AAAAB3NzaC1yc2EAAA'
    - name: "rob"
      authorized_key: 'ssh-rsa AAAA123465A'
    - name: "ruby"
      authorized_key: 'ssh-rsa XYZ7890ABC' # 替换为ruby的实际公钥

2. 修改完整Playbook

基于重构后的变量,调整任务的循环逻辑,分别读取每个用户的名称和对应密钥:

---
- name: Create Users and Assign Specific SSH Keys
  hosts: all
  gather_facts: false
  
  vars:
    users:
      - name: "paul"
        authorized_key: 'ssh-rsa AAAAB3NzaC1yc2EAAA'
      - name: "rob"
        authorized_key: 'ssh-rsa AAAA123465A'
      - name: "ruby"
        authorized_key: 'ssh-rsa XYZ7890ABC'

  tasks:
    - name: Create user accounts
      user:
        name: "{{ item.name }}"
        shell: /bin/bash
      loop: "{{ users }}" # loop是Ansible推荐的循环语法,替代with_items

    - name: Add user-specific authorized keys
      authorized_key:
        user: "{{ item.name }}"
        key: "{{ item.authorized_key }}"
      loop: "{{ users }}"

关键说明

  • 字典列表结构确保了用户名和公钥的一一对应,避免配置混乱;
  • 公钥字符串必须符合标准格式,开头为ssh-rsa(或对应密钥类型),结尾可附带注释;
  • loop是Ansible 2.5+官方推荐的循环写法,可读性和扩展性优于with_items。

内容的提问来源于stack exchange,提问作者Robert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 16:48:25