ANSIBLE:将host1的密钥内容附加到host2的授权_Keys



我已经写了一部戏

  1. 在host1
  2. 上生成酒吧键
  3. 在我的控制机上复制酒吧键
  4. 在第二个主机上部署酒吧键,即主机2

- hosts: '{{ target }}'
  tasks:
  - name: Check admin pub keys are present on host1
     stat:
      path: /var/services/homes/admin/.ssh/id_rsa.pub
  - name: Generate pub keys on host1 if non-existing
    user:
      name: admin
      generate_ssh_key: yes
      ssh_key_bits: 4096
    when: stat_result.stat.exists == False
  - name: Downloading pub key from host1 to the control machine
    command: scp admin@{{ansible_host}}:/var/services/homes/admin/.ssh/id_rsa.pub /tmp/
    delegate_to: 127.0.0.1
  - name: Copy pub key of host1 to host2
    authorized_keys:
      user: admin       
      key: "{{ lookup('file', '/tmp/id_rsa.pub') }}"
      state: present

我与:

一起运行
ansible-playbook -i hosts keys.yml -e "target=host1"

问题在最后一个任务中,即将host1的pub键复制到host2。编写的方式将再次将酒吧键复制到host1。

我该如何告诉又可以将酒吧键复制到host2?谢谢

两个选项。在主机上1:

如果可用ssh-copy-id

shell: ssh-copy-id admin@host2

shell: cat /var/services/homes/admin/.ssh/id_rsa.pub | (ssh admin@host2 "cat >> ~/.ssh/authorized_keys")

注意:我尚未测试。您可能需要调整它以使其正常工作。

我认为这可能是您的SCP命令。

这是一个棘手的人,但是您不能直接将钥匙直接送到Host2吗?您会使用密码到达那里吗?

即。

scp admin@host1:/var/services/homes/admin/.ssh/id_rsa.pub admin@host2:/usr/admin/.ssh/.

您需要使用"控制主机"的进一步原因?即,Ansible脚本是否从那里运行?

编辑:

 scp admin@host1:/var/services/homes/admin/.ssh/id_rsa.pub admin@host2:/tmp/.
cat /tmp/id_rsa.pub >> /usr/admin/.ssh/authorized_keys

在我的全部尊重下,我认为" hellov"的答案是正确的,由于剧本,它会将公共密钥从host1复制到host 2此外,它将尝试将公共密钥从host2复制到host2上的auhorized_keys。如果host2中不存在公共密钥,如果会失败。如果您只想在从host1到host2的情况下使用此功能然后您可以在需要时使用。所以我的建议将是下一个:

- name: Copy public key to authorized keys
  shell: cat /var/services/homes/admin/.ssh/id_rsa.pub | (ssh admin@host2 "cat >> ~/.ssh/authorized_keys")
  when: target == "host1" 

应该使用{{target}}

中的host1名称更改host1

相关内容

  • 没有找到相关文章

最新更新