云网牛站
所在位置:首页 > Linux安全 > 使用Python3/2、mkpasswd为Ansible生成Linux用户加密密码

使用Python3/2、mkpasswd为Ansible生成Linux用户加密密码

2020-05-18 11:34:59作者:戴进稿源:云网牛站

如果您在Linux或Unix系统上使用Ansible用户模块进行用户管理,则需要加密密码才能为用户设置密码,而无需使用提示。在macOS系统上,密码参数值的值必须为明文。本文将演示如何生成与Ansible[参考:安装Ansible(在Fedora/RHEL 8/CentOS 8/Debian/Ubuntu/Arch/openSUSE中)]用户模块一起使用的Linux用户加密密码。在Linux系统上,有多种生成哈希用户密码的方法,一种方法是使用python,另一种方法是使用mkpasswd命令行实用程序,还有许多其他方法。

 

使用Python3生成加密的密码

要生成哈希,必须在系统上安装python3软件包,根据您的操作系统,可以使用以下命令来安装软件包。

针对CentOS:

$ sudo yum -y install epel-release

$ sudo yum install python3

参考:在CentOS 8上安装Python 3和Python 2,及设置默认Python版本

针对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())'

它将要求您输入并确认密码,如下:

使用Python3/2、mkpasswd为Ansible生成Linux用户加密密码

然后,在使用用户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())'

以下是大致的输出,如下:

使用Python3/2、mkpasswd为Ansible生成Linux用户加密密码

 

使用mkpasswd生成加密的密码

您还可以使用大多数Linux系统上可用的mkpasswd实用程序来生成哈希密码。

安装mkpasswd的方法如下。

针对Ubuntu/Debian:

$ sudo apt updatee

$ sudo apt install mkpasswd

针对CentOS/Fedora:

sudo yum install expect

产生密码:

$ mkpasswd --method=sha-512

使用Python3/2、mkpasswd为Ansible生成Linux用户加密密码

 

测试生成的加密密码

我们可以使用加密的密码创建用户,并确认我们可以使用生成的密码登录:

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

使用Python3/2、mkpasswd为Ansible生成Linux用户加密密码

创建用户创建playbook:

$ vim user_create.yml

增加:

---

- name: Create demo user

  hosts: localhost

  become: yes

  become_method: sudo

  vars:

    users:

    - username: demo

      password: ... ...

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

注:请自行添加password,如下图所示:

使用Python3/2、mkpasswd为Ansible生成Linux用户加密密码

执行playbook以创建用户:

$ ansible-playbook user_create.yml --user=jkmutai --ask-pass --ask-become-pass 

使用Python3/2、mkpasswd为Ansible生成Linux用户加密密码

确认用户已创建:

$ getent passwd demo 

demo:x:1002:10::/var/home/demo:/bin/bash

切换到用户以确认加密密码是否正常:

$ su - demo

使用Python3/2、mkpasswd为Ansible生成Linux用户加密密码

删除用户:

$ sudo userdel -r demo

$ id demo    

id: ‘demo’: no such user

 

结语

以上就是如何为Ansible生成加密的Linux用户密码的全部内容。

 

相关主题

在Fedora系统上使用Ansible在AWS中组织SSH密钥(设置和运行playbook)

精选文章
热门文章