ansible - 将公钥添加到两个遥控器之间的授权密钥的简单方法?
问题描述
我需要一个遥控器才能连接到另一个遥控器,以获取一些数据,所以我需要将公钥从远程 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
它确实获取它,但它从我的计算机中获取,而不是从委派的远程..
解决方案
用这个解决了它:
- 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_key
B。
推荐阅读
- image - Flutter - 权限拒绝:读取 androidx.core.content.FileProvider
- python - 屏蔽:屏蔽指定令牌(eos)之后的所有内容
- wpf - 如何使用触发器来影响相关的网格元素?
- module - 如何定义稍后在 Julia 中共享的全局变量
- azure - Microsoft.TeamFoundation.Build.WebApi 获取由 PR 策略启动的构建状态
- javascript - 如何将拖动功能/侦听器分配给多个元素?
- jquery - 通过 CSS/jQuery 淡入淡入
- pyomo - 具有动态边界的条件分段函数
- .net - 在 WPF 应用程序的页面名称范围中使用唯一名称时无法注册重复名称错误
- r - 删除关于两列的一些行