首页 > 解决方案 > 将公钥添加到两个遥控器之间的授权密钥的简单方法?

问题描述

我需要一个遥控器才能连接到另一个遥控器,以获取一些数据,所以我需要将公钥从远程 A 共享到远程 B。

但似乎 ansible 在这方面有点笨拙。或者我没有看到固体溶液。

我看到有人建议,在控制机器上获取公钥,然后将其复制到另一个遥控器。

但是我们需要解决它似乎很笨拙。使用 ansible,您可以访问两个遥控器,所以没有更简单的方法来做到这一点(ansible 会自动处理这种传输)吗?

A假设我在远程有公钥~/.ssh/id_ed25519.pub。如何传输并将其添加到authorized_keys远程B

更新

试图获取这样的密钥:

- name: Fetch public key data from backups_host
  ansible.builtin.set_fact:
    backups_host_public_key: "{{ lookup('file', '~/.ssh/id_ed25519.pub') }}"
  delegate_to: "{{ backups_host }}"
  when: backups_host is defined

它确实获取它,但它从我的计算机中获取,而不是从委派的远程..

标签: ansiblessh-keys

解决方案


用这个解决了它:

- block:
    - name: Fetch public key data from backups_host
      ansible.builtin.command: cat ~/.ssh/id_ed25519.pub
      delegate_to: "{{ backups_host }}"
      register: public_key_data

    - name: "Add public key from backups_host"
      ansible.posix.authorized_key:
        user: root
        state: present
        key: "{{ public_key_data.stdout }}"

  when: backups_host is defined

我使用delegate_to, 从远程 A 读取公钥数据并将其保存在变量中。然后在添加时将其传递给远程authorized_keyB。


推荐阅读