2016-08-17 2 views
1

У меня вопрос, можно ли создать ключ SSH без сохранения локально, вместо того, чтобы я мог сохранить его как переменную. Есть ли какой-либо вариант, чтобы я мог безопасно хранить свои ключи без сохранения локально ,Key Generation using Ansible

Благодаря

+0

Если вы просто иметь его в переменной, но не сохраняется, как вы будете его использовать? –

+0

Что вы пытаетесь достичь? Вы генерируете новые ключи «на лету» или просто пытаетесь сохранить статические ключи? Вы храните их на целевых машинах? –

+0

Основная область действия: мне нужно избегать хранения ключа локально, а не того, что я был сохранен в любом из моего хранилища объектов, используя ansible – hain

ответ

1

Это немного Hacky, но отвечает на вопрос:

--- 
- 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

Привет, спасибо Суворов. Но можем ли мы использовать модуль ec2_key для генерации файлов pem и извлечь требуемый ключ публичного и частного bu, используя любые криптографические библиотеки python в Ansible, вместо использования ssh keygen, указав путь к файлу как «/ dev /», . Так что мы можем безопасно обрабатывать наш ключ, не временно сохраняя его. Возможно ли это? – hain

+0

@hain Я уверен, что есть много хакерских способов сделать это, но если вам действительно нужно это в производстве, вы должны написать свой собственный модуль с некоторой помощью libs, возможно (pycryptodome) [https: // github. com/Legrandin/pycryptodome] –

+0

Спасибо Суворову снова. Так что если мы используем модуль ec2_key в незаменимых средствах, он даст мне только сгенерированный файл pem, что означает, что он дает мне закрытый ключ, а не открытый ключ, верно? – hain