📜 Как создать зашифрованный пароль пользователя Linux для Ansible |

📜 Как создать зашифрованный пароль пользователя Linux для Ansible

Мануал

Если вы используете Ansible user module для управления пользователями в системах Linux или Unix, зашифрованный пароль необходим для установки пароля для пользователя без использования запроса.

В системах MacOS значение параметра пароля должно быть открытым текстом.

В этом руководстве будет показано, как создать зашифрованный пароль пользователя Linux для использования user module Ansible.

Существуют различные способы создания хешированного пароля пользователя в системе Linux.

Одним из методов является использование python, а другим – использование утилиты командной строки mkpasswd и многих других.

Генерация зашифрованного пароля с Python3

Для генерации хэша у вас должен быть пакет python3 в вашей системе.

Следующие команды могут использоваться для установки пакета в зависимости от вашей операционной системы.

--- CentOS ---
$ sudo yum -y install epel-release
$ sudo yum install python3

--- Ubuntu / Debian ---
sudo apt update
sudo apt install python3

Чтобы сгенерировать хеш, используйте такую команду:

python3 -c 'import crypt,getpass;pw=getpass.getpass();print(crypt.crypt(pw) if (pw==getpass.getpass("Confirm: ")) else exit())'

Вам будет предложено ввести и подтвердить пароль:

Password: 
Confirm: 
$6$/1OFlW9yH1KHHiOm$pn2SfNgbF/rbblahjseab/p1Xb6Z29UZik.BUilZ.TLnp9yvl2HViB3fs8XdVteboeioss7o2A4g1IYxw.TFJ/
Затем вы будете использовать зашифрованный пароль, напечатанный в качестве значения параметра пароля при использовании user module.

Генерация зашифрованного пароля с Python2

Если вы используете Python2, например, на сервере CentOS 7, сначала установите pip.

sudo yum -y install python-pip

Затем убедитесь, что установлена библиотека хэширования пароля Passlib:

sudo pip install passlib

Создайте зашифрованный пароль с помощью команды:

 python -c 'import crypt,getpass;pw=getpass.getpass();print(crypt.crypt(pw) if (pw==getpass.getpass("Confirm: ")) else exit())'

Тот же вывод, что и раньше:

Password: 
Confirm: 
$6$4QSwvTfs5ijeRo6V$qAgug/HU1WUe7e/s5c6H0HQDCb4QnOumJ6bgxyykiKgewNTr/ifF5yUBq7taNZ0eJAqrXXXwzvxd9ewgq9XHI0

Генерация зашифрованного пароля с помощью mkpasswd

Вы также можете использовать утилиту mkpasswd, которая доступна в большинстве систем Linux, для генерации захешированного пароля.

Установите mkpasswd:

--- Ubuntu / Debian ---
$ sudo apt update
$ sudo apt install mkpasswd

--- CentOS / Fedora ---
sudo yum install expect

Создайте пароль:

$ mkpasswd --method=sha-512
Password: 
$6$ieMLxPFShvi6rao9$XEAU9ZDvnPtL.sDuSdRi6M79sgD9254b/0wZvftBNvMOjj3pHJBCIe04x2M.JA7gZ7MwpBWat1t4WQDFziZPw1

Тестирование зашифрованного пароля

Мы можем создать пользователя с зашифрованным паролем и подтвердить, что мы можем войти с созданным паролем.

$ python3 -c 'import crypt,getpass;pw=getpass.getpass();print(crypt.crypt(pw) if (pw==getpass.getpass("Confirm: ")) else exit())'
Password: 
Confirm: 
$6$pTpaEDHweswcO86u$MuAiSx/iHxmV2jSvmNzXQYIz1lYIMCeP5KtmZQnx6mgJVfweP6oC8nMQQ9QeLc821YV50fh6yMzOjUCxY0lIq.

Создайте плейбук:

$ vim user_create.yml

Со следующим содержимым:

---
- name: Create demo user
  hosts: localhost
  become: yes
  become_method: sudo
  vars:
    users:
    - username: demo
      password: $6$pTpaEDHweswcO86u$MuAiSx/iHxmV2jSvmNzXQYIz1lYIMCeP5KtmZQnx6mgJVfweP6oC8nMQQ9QeLc821YV50fh6yMzOjUCxY0lIq.
  tasks:
    - name: Create user demo
      user:
          name: "{{ item.username }}"
          shell: /bin/bash
          createhome: yes
          group: wheel
          generate_ssh_key: yes
          ssh_key_bits: 2048
          password: "{{ item.password }}"
          update_password: always
      with_items: "{{ users }}"

Выполните плейбук, чтобы создать пользователя.

$ ansible-playbook user_create.yml --user=itsecforu --ask-pass --ask-become-pass 
SSH password: 
BECOME password[defaults to SSH password]: 
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'

PLAY [Create demo user] ********************************************************************************************************************************

TASK [Gathering Facts] *********************************************************************************************************************************
ok: [localhost]

TASK [Create user demo] ********************************************************************************************************************************
changed: [localhost] => (item={'username': 'demo', 'password': '$6$pTpaEDHweswcO86u$MuAiSx/iHxmV2jSvmNzXQYIz1lYIMCeP5KtmZQnx6mgJVfweP6oC8nMQQ9QeLc821YV50fh6yMzOjUCxY0lIq.'})

PLAY RECAP *********************************************************************************************************************************************
localhost                  : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

Подтвердите, что пользователь был создан.

$ getent passwd demo 
demo:x:1002:10::/var/home/demo:/bin/bash
Переключитесь на пользователя, чтобы подтвердить, что зашифрованный пароль работает.
$ su - demo
Password: 

Welcome to Fedora Silverblue. This terminal is running on the
host system. You may want to try out the Toolbox for a directly
mutable environment that allows package installation with DNF.

For more information, see the documentation.

[demo@fed ~]$ 

Удалите пользователя:

$ sudo userdel -r demo
$ id demo           
id: ‘demo’: no such user
Это все о том, как создать зашифрованный пароль пользователя Linux для Ansible.

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий

  1. Igor

    В Debian like операционных системах mkpasswd является частью пакета whois и не поставляется в качестве отдельного пакета. Поправьте, пожалуйста:
    sudo apt install mkpasswd
    надо заменить на
    sudo apt install whois

    Также нашел опечатку – две буквы ее вместо одной:
    sudo apt updatee

    Ответить
    1. Martyshkin

      Спасибо за дополнение, опечатку поправили

      Ответить