2016-08-17 4 views
1

Ich habe eine Frage, ob es möglich ist, SSH-Schlüssel zu erstellen, ohne lokal zu speichern, anstatt ich kann es als Variable speichern. Gibt es eine Option, so dass ich meine Schlüssel sicher ohne lokal speichern kann .Key Generation Using Ansible

Dank

+0

Wenn Sie nur in einer Variablen, aber nicht gespeichert, wie Sie es verwenden? –

+0

Was versuchst du zu erreichen? Generieren Sie neue Schlüssel im laufenden Betrieb oder versuchen Sie nur, statische Schlüssel zu speichern? Speichern Sie sie auf den Zielgeräten? –

+0

Hauptbereich ist ich muss vermeiden, Schlüssel lokal zu speichern, anstatt dass ich in jedem meiner Objekt Speicher mit ansible gespeichert – hain

Antwort

1

Es ist ein bisschen hacky, aber beantwortet die Frage:

--- 
- hosts: localhost 
    tasks: 
    - expect: 
     command: ssh-keygen -b 2048 -t rsa -f /dev/stdout -q 
     responses: 
      Overwrite: y 
      Enter: "\n" 
     failed_when: "'BEGIN RSA PRIVATE KEY' not in priv_key_raw.stdout" 
     changed_when: false 
     register: priv_key_raw 

    - set_fact: 
     priv_key: "{{ (priv_key_raw.stdout_lines[3:])[:-1] }}" 

    - shell: "/bin/echo -e \"{{ priv_key | join('\\n') }}\" | ssh-keygen -y -f /dev/stdin" 
     register: pub_key_raw 
     changed_when: false 

    - set_fact: 
     pub_key: "{{ pub_key_raw.stdout }}" 

    - debug: var=priv_key 
    - debug: var=pub_key 
+0

Hey danke Suvorov.Aber ob wir das ec2_key Modul für die pem Dateigenerierung benutzen können und einen benötigten Schlüssel von public und private bu unter Verwendung aller Krypto-Bibliotheken von Python in Ansible extrahieren, anstatt ssh keygen zu verwenden, indem wir mit dem Dateipfad wie "/ dev /" .So können wir unseren Schlüssel sicher handhaben, ohne vorübergehend zu speichern. Ist es möglich? – hain

+0

@hain ich bin sicher, es gibt eine Menge hacky Möglichkeiten, dies zu tun, aber wenn Sie dies wirklich in der Produktion brauchen, sollten Sie Ihr eigenes Ansible-Modul mit einigen libs Hilfe schreiben, vielleicht (pycryptodome) [https: // github. com/Legrandin/pycryptodome] –

+0

Danke Suvorov noch einmal. Also, wenn wir ec2_key-Modul in ansible verwenden, bedeutet es mir nur generierte pem-Datei, was bedeutet, dass es mir einen privaten Schlüssel nicht öffentlichen Schlüssel gibt, bin ich richtig? – hain