我有两台服务器。我管理serverA
与安西 bool 。 serverB
不由 Ansible 管理。我要 serverA
能够访问serverB
通过复制 ssh_pub_key
的serverA
至serverB
.
这可以通过调用 ssh-copy-id user@serverB
手动完成上serverA
.
我想使用 Ansible 在 serverA
上执行此操作自动。
- name: Register ssh key at serverB
command: ssh-copy-id -i /home/{{user}}/.ssh/id_rsa.pub -o StrictHostKeyChecking=no user@serverB
调用ssh-copy-id
要求我输入 user@serverB 的 ssh 密码,以便可以复制 key 。
我怎样才能通过ansible做到这一点?我希望它在执行剧本时以交互方式询问 user@serverB 密码。将密码存储在 ansible 保管库中也是一种选择。那我还是不知道如何避免ssh-copy-id
的交互式密码调用不过。
我还添加了-o StrictHostKeyChecking=no
到调用,因为这是调用 ssh-copy-id 时通常需要用户交互的另一种交互。
最佳答案
如果使用ssh-copy-id
命令没有限制,您不妨尝试一下Ansible authorized_key
模块。
那么你的代码可能看起来像这样:
authorized_key:
user: <user>
key: "{{ lookup('file', '/home/' + lookup('env', 'USER') + '/.ssh/id_rsa.pub') }}"
关于ssh - 在 Ansible playbook 中调用 ssh-copy-id - 如何处理密码提示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31681144/