安全ssh公钥复制



我想创建新用户,然后将SSH密钥复制到这个用户目录(在执行角色之前我已经得到了这个密钥)。之后,我想禁用密码登录。

以下是我现在要做的:我的任务/main.yml

- name: Add users
  user: name={{ item }}
        groups=users,wheel
        update_password=on_create
        password=$6$QoFz/cLhsroToP$4...
    with_items:"{{ list }}"
- name: Copy SSH keys
  authorized_key: user={{ item }} key={{ item }}.pub state=present
with_items: "{{ list }}"

我的vars/main.yml文件:

list:
    - 'user1'
    - 'user2'
    - 'user3'

我的问题是,我的钥匙存放在哪里?这种复印方式正确吗?

我有一个错误:

failed: [127.0.0.1] => (item=user1) => {"failed": true, "item": "user1"}
msg: invalid key specified: user1.pub

第二个任务将失败,因为authorized_key希望key参数为字符串(authorized_key-docs)。您仍然可以使用list参数来获取密钥文件的内容,但必须使用lookup。这就是第二个任务的样子:

- name: "Copy SSH Keys"
  authorized_key: user={{ item }} key={{ lookup('file', item) }} state=present

为了回答您的问题"文件将存储在哪里,这完全取决于您。默认情况下(如果您没有指定路径),模块将查找所有可用的files/目录。因此,如果它是一个角色,它将查找:

/roles/your_role/files

/files

./files

查找文档

谢谢你的回答,我无法评论你的帖子,因为我的回答太长了。

我终于可以从安全的一面看到钥匙了,但任务还是失败了。这是输出:

failed: [127.0.0.1] => (item=user1) => {"failed": true, "item": "user1"}
msg: this module requires key=value arguments (['user=user1', 'key=ssh-rsa', 'AAAAB3NzaC1yc2EAAAADAQABAAA...', 'user@domain', 'state=present'])

我做错什么了吗?

找到了答案!引用关键输入解决了问题,所以在我的例子中,函数应该是这样的:

- name: "Copy SSH Keys"
  authorized_key: user="{{ item }}" key="{{ lookup('file', item) }}" state=present

希望它将来能帮助到别人。非常感谢你的帮助!

最新更新