将密钥对添加到远程 linux 服务器

Add Key pair to remote linux server

我想使用 ansible 在 linux 服务器 "Ubuntu 18.04lts" 上向 "tuser" 添加一个密钥对,只是为了避免基于密码的登录。 所以我在 yml 剧本文件中成功地尝试了这种方式:

- name: Set authorized key for tuser
  become: yes
  authorized_key:
    user: tuser
    state: present
    key:  "{{ lookup('file', '/home/rogg/.ssh/id_rsa.pub') }}"

嗯,但是当我尝试使用密钥中的其他位置时:

- name: Set authorized key for tuser
  become: yes
  authorized_key:
    user: tuser
    state: present
    key: "{{ role_path }}/files/csbin_keys/id_rsa.pub"

我得到:

"msg": "invalid key specified

我已经使用 {{ role_path }} 复制其他文件并且可以正常工作,但在这个密钥中它没有

authorized_key 模块的文档摘录:

= key
The SSH public key(s), as a string or (since 1.9) url (https://github.com/username.keys)

在您的第一个示例中,lookup('file', '/home/rogg/.ssh/id_rsa.pub') 读取文件 /home/rogg/.ssh/id_rsa.pub 并将其内容作为 key 值提供。

在您的第二个示例中,您尝试将文件路径作为 key 值提供。

用查找替换它:

lookup('file', role_path+'/files/csbin_keys/id_rsa.pub')

你也可以使用with_file选项,读入一个文件的内容:

- name: Ensure the public key is populated
    authorized_key:
      user: john
      state: present
      key: '{{ item }}'
    with_file:
      - /home/john/.ssh/id_rsa.pub