【问题标题】:Ansible ssh public keys copyingAnsible ssh 公钥复制
【发布时间】:2016-05-13 18:53:29
【问题描述】:

我想创建一个新用户,然后将 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

【问题讨论】:

    标签: ssh ansible


    【解决方案1】:

    第二个任务将失败,因为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

    Lookups docs

    【讨论】:

      【解决方案2】:

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

      我终于可以从 ansible 端看到键了,但是任务仍然失败。这是输出:

      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
      

      希望它对将来的某人有所帮助。非常感谢您的帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-12-16
        • 2016-01-06
        • 2021-11-08
        • 2020-01-15
        • 2016-08-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多