Ansible 节点间的可解析无密码访问

Ansible 节点间的可解析无密码访问,ansible,Ansible,为所有其他节点提供对所有节点的无密码访问 For each node: Get public ssh key Add that key to authorized_keys files of all other nodes 下面是我尝试过的,但它没有按预期工作 - name: Get ssh public key from all the nodes for some_user user shell: cat ~/.ssh/id_rsa.pub register:

为所有其他节点提供对所有节点的无密码访问

For each node:   
  Get public ssh key   
  Add that key to authorized_keys files of all other nodes
下面是我尝试过的,但它没有按预期工作

- name: Get ssh public key from all the nodes for some_user user
  shell: cat ~/.ssh/id_rsa.pub
  register: ssh_pub_key
  become: yes
  become_user: some_user
  changed_when: "ssh_pub_key.rc != 0"
  always_run: yes

- set_fact:
    auth_keys: "{{ ssh_pub_key.stdout | join() }}"

- debug: var=auth_keys

- name: Add public key to all other nodes for some_user user
  authorized_key:
    user: some_user
    key: "{{ ssh_pub_key.stdout }}"

不需要从每个节点收集每个ssh密钥并将它们分发到每个节点,这是一种糟糕的做法

改用ssh代理转发


您只需要一个密钥(创建到中央服务器或使用现有密钥),然后将pub(通过ansible)推送到您的节点。

将存储库克隆到启用ansible的主机:

git clone https://github.com/ilias-sp/ansible-setup-passwordless-ssh.git
或者,您可以从该存储库下载ansible_setup_passwordless_ssh.yml和主机

运行:

通过运行此剧本,您的主机会发生以下情况:

Localhost:生成一个SSH密钥并将其放置在.SSH文件夹下。其文件名是可配置的,默认为ansible_rsa。此SSH密钥添加到~/.SSH/config文件中,供SSH客户端在连接到远程主机时使用

远程主机:生成的SSH密钥将传播到您在主机清单文件中配置的远程主机列表,并添加到它们的~/.SSH/authorized_keys文件中。这是使用用于此作业的ssh copy id linux实用程序完成的。sshpasslinux实用程序用于帮助运行脚本,而无需提示输入用户密码


参考资料:

尝试收集每个节点的公钥和设置事实,然后应用一个模板,在其中进行一些循环。
ansible-playbook -i hosts ansible_setup_passwordless_ssh.yml