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