Ansible:如何将公钥从节点复制到本地?

Ansible:如何将公钥从节点复制到本地?,ansible,Ansible,如何将SSH公钥从每个节点复制到ansible服务器 换句话说,make:ssh copy iduser@ansible_server? 我想让它自动使用playbook文件 我提出了一些解决办法: - name: ssh-copy-id hosts: builder become: true tasks: - name: generate ssh keys on node user: name: user generate_ssh

如何将SSH公钥从每个节点复制到ansible服务器

换句话说,make:ssh copy iduser@ansible_server?

我想让它自动使用playbook文件

我提出了一些解决办法:

- name: ssh-copy-id
  hosts: builder
  become: true
  tasks:
    - name: generate ssh keys on node
      user:
        name: user
        generate_ssh_key: yes
        ssh_key_bits: 2048
        ssh_key_file: .ssh/id_rsa

    - name: get content of public key (node)
      shell: cat "/home/user/.ssh/id_rsa.pub"
      changed_when: false
      register: public_key

    - name: append public key from node to local authorized_keys
      lineinfile:
        line: "{{ public_key.stdout }}"
        insertafter: EOF
        dest: /local
      delegate_to: 127.0.0.1

如果在同一剧本中生成ssh密钥,只需捕获结果并使用它:

- name: generate ssh keys on node
  user:
    name: user
    generate_ssh_key: yes
    ssh_key_bits: 2048
    ssh_key_file: .ssh/id_rsa
  register: user_res

- name: append public key from node to local authorized_keys
  lineinfile:
    line: "{{ user_res.ssh_public_key }}"
    insertafter: EOF
    dest: /local
  delegate_to: 127.0.0.1

首先。但老实说,你的任务有点奇怪。为什么需要远程节点的公钥?为什么要这样做?要使用节点的rsync(将日志复制到服务器),但它不起作用,因为ssh copy id也会生成文件:known_hostsy您可以始终添加
ssh keyscan
任务。