我正在按外壳供应商供应无用的盒装货,而供应商又对本地主机执行ansible播放。我正在使用以下剧本
---
- name: Provision vagrant1 box
hosts: localhost
tasks:
- name: Install nmap
apt: name=nmap state=latest update_cache=yes
- name: Install sshpass
apt: name=sshpass state=latest update_cache=yes
- name: Generate ssh key
shell: "ssh-keygen -f $HOME/.ssh/id_rsa -t rsa -N ''"
现在的问题是,shell配置器,因此以根用户身份执行ansible播放,因为我必须为无业游民和其他用户设置ssh密钥。
另外,自动执行ssh密钥创建并将公共密钥复制到已知主机的操作首先让人感到笨拙和脆弱,因为可能会信任服务器提示和密码输入提示,并且密码可能会有所不同。自动为不同用户创建ssh密钥并将公钥复制到ansible的未知数量的远程服务器的最佳方法是什么?
对于那些好奇的人,我的意图是使用nmap查找网络上的所有远程服务器,并使用sshpass提供密码以帮助自动执行ssh-copy-id。
最佳答案
在Ansible剧本中为用户生成SSH密钥的正确方法是使用the user module的generate_ssh_key
关键字。这样,将使用正确的权限生成密钥,并且现有的密钥将不会被覆盖(除非您希望这样做):
---
- hosts: your_host
- user:
...
generate_ssh_key=yes
...
关于linux - 如何在Linux中为另一个用户生成ssh key ,并在ansible中使其自动化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40060895/