fun*_*len 6 ssh ansible ansible-playbook
我有两台服务器。我serverA与Ansible合作。serverB不通过Ansible管理。我希望serverA能够获得serverB通过复制ssh_pub_key的serverA到serverB。
这可以手动调用来完成ssh-copy-id user@serverB的serverA。
我想serverA自动启用Ansible 。
- name: Register ssh key at serverB
command: ssh-copy-id -i /home/{{user}}/.ssh/id_rsa.pub -o StrictHostKeyChecking=no user@serverB
Run Code Online (Sandbox Code Playgroud)
打电话ssh-copy-id要求我输入user @ serverB的ssh密码,以便可以复制密钥。
我如何通过ansible做到这一点?我希望它在执行剧本时以交互方式询问user @ serverB密码。也可以选择将密码存储在ansible Vault中。那我仍然不知道如何避免交互式的密码调用ssh-copy-id。
我还添加-o StrictHostKeyChecking=no了呼叫,因为这是另一种交互,通常在调用ssh-copy-id时需要用户交互。
您可以尝试sshpass工具。它需要像下面这样修改您的命令:
command: sshpass -p password ssh-copy-id -i /home/{{user}}/.ssh/id_rsa.pub -o StrictHostKeyChecking=no user@serverB
Run Code Online (Sandbox Code Playgroud)
但是还有其他提供密码的选项-请参见sshpass(1)手册页。
如果使用ssh-copy-id命令不是限制,你不妨试试 Ansibleauthorized_key模块。
那么您的代码可能如下所示:
authorized_key:
user: <user>
key: "{{ lookup('file', '/home/' + lookup('env', 'USER') + '/.ssh/id_rsa.pub') }}"
Run Code Online (Sandbox Code Playgroud)