簡體   English   中英

如何在linux中為另一個用戶生成ssh密鑰,並在ansible中自動化

[英]How to generate ssh key for another user in linux, and automate it in ansible

我正在通過 shell 配置器配置 vagrant box,它反過來對 localhost 執行 ansible play。 我正在使用以下劇本

---
- 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 play 以 root 身份執行,因為我必須為用戶 vagrant 和可能的其他用戶設置 ssh 密鑰。

此外,自動化 ssh 密鑰創建和將公鑰復制到已知主機首先感覺笨拙和脆弱,因為可能信任服務器提示和密碼輸入提示,密碼可能會有所不同。 為不同用戶自動創建 ssh 密鑰並將公鑰復制到未知數量的遠程服務器的最佳方法是什么?

對於那些好奇的人,我打算使用 nmap 查找網絡上的所有遠程服務器,並使用 sshpass 提供密碼以幫助自動化 ssh-copy-id。

在 Ansible playbook 中為用戶生成 SSH 密鑰的正確方法是使用user 模塊的generate_ssh_key關鍵字。 這樣,密鑰會以正確的權限生成,並且現有的密鑰不會被覆蓋(除非您希望這樣做):

---
- hosts: your_host
- user:
    ...
    generate_ssh_key=yes
    ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM