如何为ansible生成Linux用户加密密码
时间:2020-02-23 14:29:38 来源:igfitidea点击:
如果我们在Linux或者UNIX系统上使用Ansible用户模块进行用户管理,则在不使用提示的情况下为用户设置密码需要加密密码。
在MacOS系统上,密码参数值的值必须是Cleartext。
本教程将演示如何生成与Ansible用户模块一起使用的Linux用户加密密码。
有各种方式可以在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: $/1OFlW9yH1KHHiOm$pn2SfNgbF/rbblahjseab/p1Xb6Z29UZik.BUilZ.TLnp9yvl2HViB3fs8XdVteboeioss7o2A4g1IYxw.TFJ/
然后,我们将在使用用户Python模块时使用将加密的密码作为值打印为密码参数。
使用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: QSwvTfs5ijeRo6V$qAgug/HU1WUe7e/s5c6H0HQDCb4QnOumJ6bgxyykiKgewNTr/ifF5yUBq7taNZ0eJAqrXXXwzvxd9ewgq9XHI0
使用mkpasswd生成加密密码
我们还可以使用大多数Linux系统上提供的MKPassWD实用程序来生成散列密码。
安装mkpasswd:
--- Ubuntu/Debian -- $sudo apt updatee $sudo apt install mkpasswd --- CentOS/Fedora -- sudo yum install expect
生成密码:
$mkpasswd --method=sha-512 Password: $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: $pTpaEDHweswcO86u$MuAiSx/iHxmV2jSvmNzXQYIz1lYIMCeP5KtmZQnx6mgJVfweP6oC8nMQQ9QeLc821YV50fh6yMzOjUCxY0lIq.
创建用户创建播放册。
$vim user_create.yml
添加:
-- - name: Create demo user hosts: localhost become: yes become_method: sudo vars: users: - username: demo password: $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 }}"
执行PlayBook以创建用户。
$ansible-playbook user_create.yml --user=jkmutai --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': '$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 Jan want to try out the Toolbox for a directly mutable environment that allows package installation with DNF. For more information, see the documentation. [Hyman@theitroad ~]$
删除用户:
$sudo userdel -r demo $id demo id: ‘demo’: no such user