在两个遥控器之间将 public 键添加到 authorized_keys 的简单方法?

Simple way of adding public key to authorized_keys between two remotes?

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

不过好像ansible在这部分有点笨拙。或者我没看到固解。

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

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

假设我在 ~/.ssh/id_ed25519.pub 中的遥控器 A 上有 public 键。如何将其传输并添加到远程 B 上的 authorized_keys

更新

试图像这样获取密钥:

- 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

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

用这个解决了:

- 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读取public键数据,保存在变量中。然后在远程 B 上传递它,当添加 authorized_key.