weareinteractive / ansible-users

Ansible role which creates and manages users

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

authorized_keys "invalid key specified: s" error

XaTTa6bl4 opened this issue · comments

$ ansible --version
ansible 2.7.6
  ansible python module location = /usr/lib/python2.7/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.15rc1 (default, Nov 12 2018, 14:31:15) [GCC 7.3.0]

With task "Adding user's authorized keys" we have error:

failed: [192.168.24.2] (item={u'username': u'test', u'authorized_keys': u'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC85ntA1908bbJ7f+ELGFvHcNQ3Acqen9iFhwVeyPb1aqGLhyY7UJb1CerlF7ehTQSUhogeze8Q70fB4+jUJ4eT2056i4teSWZeo1dwqjU1IHTX8BBKerwuXsn8gOHDVkr0D0FMKKJiWOL/E94i8hoMIYNjmjihqkVy67xNHXZSRQ== test@anstest', u'shell': u'/bin/bash', u'name': u'Ansible User', u'authorized_keys_exclusive': True, u'home_create': True}) => {
    "changed": false,
    "invocation": {
        "module_args": {
            "comment": null,
            "exclusive": true,
            "follow": false,
            "key": "s\ns\nh\n-\nr\ns\na\n \nA\nA\nA\nA\nB\n3\nN\nz\na\nC\n1\ny\nc\n2\nE\nA\nA\nA\nA\nD\nA\nQ\nA\nB\nA\nA\nA\nA\ng\nQ\nC\n8\n5\nn\nt\nA\n1\n9\n0\n8\nb\nb\nJ\n7\nf\n+\nE\nL\nG\nF\nv\nH\nc\nN\nQ\n3\nA\nc\nq\ne\nn\n9\ni\nF\nh\nw\nV\ne\ny\nP\nb\n1\na\nq\nG\nL\nh\ny\nY\n7\nU\nJ\nb\n1\nC\ne\nr\nl\nF\n7\ne\nh\nT\nQ\nS\nU\nh\no\ng\ne\nz\ne\n8\nQ\n7\n0\nf\nB\n4\n+\nj\nU\nJ\n4\ne\nT\n2\n0\n5\n6\ni\n4\nt\ne\nS\nW\nZ\ne\no\n1\nd\nw\nq\nj\nU\n1\nI\nH\nT\nX\n8\nB\nB\nK\ne\nr\nw\nu\nX\ns\nn\n8\ng\nO\nH\nD\nV\nk\nr\n0\nD\n0\nF\nM\nK\nK\nJ\ni\nW\nO\nL\n/\nE\n9\n4\ni\n8\nh\no\nM\nI\nY\nN\nj\nm\nj\ni\nh\nq\nk\nV\ny\n6\n7\nx\nN\nH\nX\nZ\nS\nR\nQ\n=\n=\n \nt\ne\ns\nt\n@\na\nn\ns\nt\ne\ns\nt",
            "key_options": null,
            "keyfile": "/home/test/.ssh/authorized_keys",
            "manage_dir": true,
            "path": null,
            "state": "present",
            "unique": false,
            "user": "test",
            "validate_certs": true
        }
    },
    "item": {
        "authorized_keys": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC85ntA1908bbJ7f+ELGFvHcNQ3Acqen9iFhwVeyPb1aqGLhyY7UJb1CerlF7ehTQSUhogeze8Q70fB4+jUJ4eT2056i4teSWZeo1dwqjU1IHTX8BBKerwuXsn8gOHDVkr0D0FMKKJiWOL/E94i8hoMIYNjmjihqkVy67xNHXZSRQ== test@anstest",
        "authorized_keys_exclusive": true,
        "home_create": true,
        "name": "Ansible User",
        "shell": "/bin/bash",
        "username": "test"
    },
    "msg": "invalid key specified: s"
}

In the module we can see string:
key: "{{ item.authorized_keys | default([]) | join('\n') }}"
join('\n') adds \n after each symbol. Why it was added? May be for fix some old bug?

Hi, make sure you use an array as authorized_keys. This role allows for adding multiple keys.

- hosts: all
  become: yes
  roles:
    - weareinteractive.users
  vars:
    users:
      - username: foo
        authorized_keys:
          - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC85ntA1908bbJ7f+ELGFvHcNQ3Acqen9iFhwVeyPb1aqGLhyY7UJb1CerlF7ehTQSUhogeze8Q70fB4+jUJ4eT2056i4teSWZeo1dwqjU1IHTX8BBKerwuXsn8gOHDVkr0D0FMKKJiWOL/E94i8hoMIYNjmjihqkVy67xNHXZSRQ== test@anstest"

FYI: the join thing is used cause at time of writing this role, ansible failed if the authorized_keys index was not provided on a user. this was the only way to work around this. I think it's now possible to do a loop without failing

Hi! I've tested with array var and with key-file. It always fails. Could you, please, check it with ansible 2.7.6?

Running make ubuntu18.04 uses latest 2.7.6 version.
Could you paste in your playbook. The above line:

...
            "key": "s\ns\nh\n-\nr\ns\na\n \nA\nA\nA\nA\nB\n3\nN\nz\na\nC\n1\ny\nc\n2\nE\nA\nA\nA\nA\nD\nA\nQ\nA\nB\nA\nA\nA\nA\ng\nQ\nC\n8\n5\nn\nt\nA\n1\n9\n0\n8\nb\nb\nJ\n7\nf\n+\nE\nL\nG\nF\nv\nH\nc\nN\nQ\n3\nA\nc\nq\ne\nn\n9\ni\nF\nh\nw\nV\ne\ny\nP\nb\n1\na\nq\nG\nL\nh\ny\nY\n7\nU\nJ\nb\n1\nC\ne\nr\nl\nF\n7\ne\nh\nT\nQ\nS\nU\nh\no\ng\ne\nz\ne\n8\nQ\n7\n0\nf\nB\n4\n+\nj\nU\nJ\n4\ne\nT\n2\n0\n5\n6\ni\n4\nt\ne\nS\nW\nZ\ne\no\n1\nd\nw\nq\nj\nU\n1\nI\nH\nT\nX\n8\nB\nB\nK\ne\nr\nw\nu\nX\ns\nn\n8\ng\nO\nH\nD\nV\nk\nr\n0\nD\n0\nF\nM\nK\nK\nJ\ni\nW\nO\nL\n/\nE\n9\n4\ni\n8\nh\no\nM\nI\nY\nN\nj\nm\nj\ni\nh\nq\nk\nV\ny\n6\n7\nx\nN\nH\nX\nZ\nS\nR\nQ\n=\n=\n \nt\ne\ns\nt\n@\na\nn\ns\nt\ne\ns\nt",
...

only occurs if you don't use an array

Oh, sorry, you are right. My bad, it was not array in my last tests. Let's close the issue, Thank you!