有时候经常为如何设置一个安全、符合密码复杂度的密码而绞尽脑汁,说实话,这实在是一个体力活而且浪费时间,更重要的是设置密码的时候经常纠结。终于有一天实在忍不住了,于是学习、整理了一下如何使用Linux下命令来随机生成安全、符合密码复杂度的命令。

俗话说“工欲善其事必先利其器”。如果能用挖土机的,你为什么要用锄头? 最近一直在反思自己:习惯性用原始、老旧的方式解决问题。而不擅长利用一些工具快捷、方便的解决问题。

1:mkpaswd命令

mkpasswd 是Linux自带的一个密码生成工具,可以说是非常安全、可靠的(如果你担心一些在线的随机密码生成工具,会收集、记录你生成的密码的话)。个人非常喜欢这个工具的原因就是它可以设置生成密码的复杂度。另外,它不仅可以随机帮你生成密码,还可以直接帮你修改相关账号密码。如果你找不到这个命令,那么可能你没有安装expect包。

方式1: yum安装方式。

yum -y install expect

方式2: rpm安装方式。

 

[root@DB-Server Server]# ls *expect*

expect-5.43.0-5.1.i386.rpm  expect-5.43.0-5.1.x86_64.rpm  expect-devel-5.43.0-5.1.i386.rpm  expect-devel-5.43.0-5.1.x86_64.rpm  expectk-5.43.0-5.1.x86_64.rpm  pexpect-2.3-3.el5.noarch.rpm

[root@DB-Server Server]# rpm -ivh expect-5.43.0-5.1.x86_64.rpm

warning: expect-5.43.0-5.1.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 37017186

Preparing...                ########################################### [100%]

   1:expect                 ########################################### [100%]

关于mkpasswd命令的一些参数,如下所示:

参数

    功能描述

-l

定义生成密码的长度,默认9

-d

定义密码里面包含数字的最少个数,默认2

-c

定义密码里面包含小写字母的最少个数,默认2

-C

定义密码里面包含大写字母的最少个数,默认2

-s

定义密码密码包含特殊字符的最少个数,默认1

-p

指定另外一个生成密码的程序,默认是/etc/yppasswd

[root@DB-Server Server]# mkpasswd -l 14 -d 2 -C 2 -s 2 -v kerry

spawn passwd kerry

passwd: Unknown user name 'kerry'.

password for kerry is 1S[(qillErt8xf

[root@DB-Server Server]# mkpasswd -l 14 -d 2 -C 2 -s 2 -v test

spawn passwd test

passwd: Unknown user name 'test'.

password for test is 1ar1t$-qwIHcrb

[root@DB-Server Server]# mkpasswd -l 14 -d 2 -C 2 -s 2 -v oracle

spawn passwd oracle

Changing password for user oracle.

New UNIX password: 

Retype new UNIX password: 

passwd: all authentication tokens updated successfully.

password for oracle is 24_vFkxqsol^pR

[root@DB-Server Server]# 

 

[root@DB-Server Server]# mkpasswd -l 14 -d 2 -C 2 -s 2  oracle

i&jijfgB92*fDa

[root@DB-Server Server]# 

 

2:apg命令

apg是一款开源免费的密码随机生成器,官方网址为http://www.adel.nursat.kz/apg/

安装方式:

 

1:Ubuntu下的apt-get方式:

sudo apt-get install apg

2:使用RPM方式:

[root@DB-Server tmp]# rpm -ivh apg-2.2.3-3.el5.rf.i386.rpm 

warning: apg-2.2.3-3.el5.rf.i386.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6

Preparing...                ########################################### [100%]

   1:apg                    ########################################### [100%]

[root@DB-Server tmp]# 

关于apg命令的一些参数,如下所示:

参数

    功能描述

-M

生成密码的模式

-E

生成密码过程中排除字符串

-r

apply dictionary check against file

-b

-p

paranoid modifier for bloom filter check

-a

1: 随机密码生成模式。  0:可发音的密码生成

-n

包含数字,但是不是每个密码都有

-N

每个密码都必须包含数字

-m

生成密码最小长度,默认为8,实际生成的随机密码长度都可能超过这个值

-x

生成密码最大长度。

-s

包含特殊字符,但是不一定每个都有

-S

每个密码都必须有特殊字符

-c

包含大写字母。

-C

每个密码都必须包含小写字母

-d

在生成的密码中间不加任何分割符,默认6个密码连成一长串

-l

生成密码的spell

-t

输出密码中可发音字符的发音

-y

输出加密密码

-q

静默模式,不输出告警信息

-h

输出帮助信息

-v

版本信息。

[root@DB-Server ~]# 

[root@DB-Server ~]# apg -M SNCL -m 8  -x 12  

Cupif6Swib?

Kij/OvMuk7

cyn=OtDuIf1

eic3Enn>

newCod"Rab4

{Flipnayt0

[root@DB-Server ~]# apg -M SNCL -m 8  -x 12  -t

dujghitt6Ob` (duj-ghitt-SIX-Ob-GRAVE)

RewgEmEc7Ow~ (Rewg-Em-Ec-SEVEN-Ow-TILDE)

Oc%Knegg1 (Oc-PERCENT_SIGN-Knegg-ONE)

loon5Quem+ (loon-FIVE-Quem-PLUS_SIGN)

El5Bleb{ (El-FIVE-Bleb-LEFT_BRACE)

Te4qued( (Te-FOUR-qued-LEFT_PARENTHESIS)

 

3:pwgen

pwgen生成的密码容易记忆而且安全。pwgen的下载地址为https://sourceforge.net/projects/pwgen-win/files/PWGen/2.9.0/

apt-get install pwgen

关于pwgen命令的一些参数,如下所示:参数说明:

参数

    功能描述

-c

密码里面包含至少一个大写字母

-A

密码里面不包含大写字母

-n

密码里面至少包含一个数字。

-0

密码中不包含数字

-y

密码中至少包含一个特殊字符。

-s

生成安全随机的密码

-B

密码中不包含混淆的字符,例如“1”和“I”

-h

查看帮助信息

-H

使用指定文件sha1哈希生成,不适用随机生成

-C

按列打印生成的随机密码

-1

每行输出一个密码,不按列打印生成密码

-v

密码不包括元音字母或者可能被误认为是元音字母的数字

root@DB-Server:~# pwgen -h

Usage: pwgen [ OPTIONS ] [ pw_length ] [ num_pw ]

 

Options supported by pwgen:

  -c or --capitalize

        Include at least one capital letter in the password

  -A or --no-capitalize

        Don't include capital letters in the password

  -n or --numerals

        Include at least one number in the password

  -0 or --no-numerals

        Don't include numbers in the password

  -y or --symbols

        Include at least one special symbol in the password

  -s or --secure

        Generate completely random passwords

  -B or --ambiguous

        Don't include ambiguous characters in the password

  -h or --help

        Print a help message

  -H or --sha1=path/to/file[#seed]

        Use sha1 hash of given file as a (not so) random generator

  -C

        Print the generated passwords in columns

  -1

        Don't print the generated passwords in columns

  -v or --no-vowels

        Do not use any vowels so as to avoid accidental nasty words

 

root@DB-Server:~# pwgen -C

Xu3aiQuu choo2Aij ohCh3eip ou8ofeeL aYai5thi iet3eeNe ieth1Dei Mairah0o

gad9ooTh faBohZ6e ooJee3Oo Thiec4ah ahb1Iedi Sah7ahth Kainee4o beew7EeW

EedoHa1B eom3Aiph daigee2I AoG4Gei8 Siejoo9o Eemahk6a erur1Aim ohbu6Thi

ae0Ohbai Ehai9go0 ni0iYe4k Ais0eedo Ki3Aiku4 cue7AeXi Ao3lae5o oot2ahTh

yiev2Lei iNgeeth5 aeBi1sai quahh0Ei wei3aeP5 Bohng8ae Eecuor5i kie1eiTh

hiepa7Th uchaiTh5 eiX5Echi reiR4ele RaWaic5l Ahk6fae1 eiD5aen2 saep4Voh

irea6Quo Iakoh7pi eiPhoo1o pie9NeiR aj2Thied Mi3shugh oingi8Oo Vohthoo3

eph6Eed1 Ibooc3ux wo5TaPha Ceigh8aH eeX7ae6r aeB1phoo zohquo9H ahPhaig5

daenu0Ue qui2Feph queT5wo7 fooquo1M Vei4ceej Nie3nae2 IpahLa7e Ku6ahbuf

Oong2ye8 eiJ2haej ohChie4i oowah4Oz utaiM8Sh hah3Oong ieQu1pai aewai8Mi

waip3Aiz Hi0se4ai boon0AZi iR0eicee theeTh5n aeFo4air Tah7teef Aogh3Quo

Iya6eigo ie9Heegh aeyoh9Bo eiXoos4z YeZ7obai doosei4W sapeeBe8 ood1CahC

ie5ohF1s Goonoob2 aiy9Wu7W Oeh3sa5v EiTh9vai iyahs1Fu she5Oogi kohsha7E

Deeleit4 eibie0Th ou4Deihi Pai0oluk Vae6baih Doocee5e ahD2iex3 eil9aiRu

zeiNou0C uu4baiRi ahx2Eew2 Ashai0Ee Yae0aita paph4Air Ich4nei4 Mooph1Ch

eZ0AiTha Hoo8gaeh aiTha3Ga Quaif7ei Iel9oafu Cai0iD2u EeCuL0qu oochae0A

vuk1She4 Bai3Ohte aiChah9v Mohz7iYo zaeyoo8J xah4ohHi ohZ1ohw6 Eed0aeKo

tooQu3ar eiH8rata wiech2UB noMooch6 ahv8Boo3 zea2Gei4 oaM4Eile Cier9ieV

baeReef9 Iom2the0 Foe3ieza zaiNgat4 do1Bah7R ATuyom2u EeQu1lie chaeXo2j

eiza0Aed Leimuol0 eid5yu5C ahp4ahTu OobieSh2 Av8Iaxoh yeid0Eej gooR1aeY

root@DB-Server:~# pwgen -1

au9ni2Fa

生成一个10个长度包含大小字母,数字、特殊字符的密码:

root@DB-Server:~# pwgen -1cny 10

 

The9ciep#a

生成12个密码长度为10,并且至少包含一个特殊字符、数字、大写字母的密码

root@DB-Server:~# pwgen -cy -1 -n 10 12

cahw]ie7uG

nie1OoKo-u

Anguu4Iu!N

hie%m2ojeH

be7Wo{w:ah

Ee^quaif2u

lo{Ngia1ce

AeToh"D7Ah

ieS5Cho=ch

Lu4seey<aB

Si>oR.aiH6

eo;l6Fie1m

当然还有一些其它密码生成工具,例如makepasswd、passwordmaker-cli 。个人觉得工具的掌握在精不在多,熟练掌握一两款工具即可。网上有篇用Linux命令行生成随机密码的十种方法, 里面介绍了很多种生成密码的工具和方法,只是有些命令和方法非常不实用。

 

参考资料:

http://www.geekfan.net/7064/

http://www.makeuseof.com/tag/5-ways-generate-secure-passwords-linux/

Linux下随机生成密码的命令总结的更多相关文章

  1. Linux下提权常用小命令

    有些新手朋友在拿到一个webshell后如果看到服务器是Linux或Unix操作系统的就直接放弃提权,认为Linux或Unix下的提权很难,不是大家能做的,其实Linux下的提权并没有很多人想象的那么 ...

  2. Linux下几种文件传输命令 sz rz sftp scp

    Linux下几种文件传输命令 sz rz sftp scp 最近在部署系统时接触了一些文件传输命令,分别做一下简单记录: 1.sftp Secure Ftp 是一个基于SSH安全协议的文件传输管理工具 ...

  3. [原创] Linux下几种文件传输命令 sz rz sftp scp介绍

    Linux下几种文件传输命令 sz rz sftp scp介绍 1.sftp Secure Ftp 是一个基于SSH安全协议的文件传输管理工具.由于它是基于SSH的,会在传输过程中对用户的密码.数据等 ...

  4. Kali Linux下破解WIFI密码挂载usb无线网卡的方法

    Kali Linux下破解WIFI密码挂载usb无线网卡的方法 时间:2014-10-12    来源:服务器之家    投稿:root 首先我要说的是,wifi密码的破解不是想象中的那么容易,目前还 ...

  5. Linux下SSH免密码登录

    转自:http://haitao.iteye.com/blog/1744272 ssh配置 主机A:10.0.5.199 主机B:10.0.5.198 需要配置主机A无密码登录主机A,主机B 先确保所 ...

  6. linux下维护服务器之常用命令

    linux下维护服务器之常用命令! 第1套如下: 正则表达式: 1.如何不要文件中的空白行和注释语句: [root@localhost ~]# grep -v '^$' 文件名 |grep -v '^ ...

  7. Linux下的暴力密码在线破解工具Hydra安装及其组件安装-使用

    Linux下的暴力密码在线破解工具Hydra安装及其组件安装-使用 hydra可以破解: http://www.thc.org/thc-hydra,可支持AFP, Cisco AAA, Cisco a ...

  8. Linux下忘记MySQL密码的解决方法和输入mysqld_safe --skip-grant-tables &后无法进入MySQL的解决方法

    在Linux下忘记MySQL密码后我们可以通过一个mysql的参数--skip-grant-tables &轻松解决这个问题 亲测在CentOS有效 其中 --skip-grant-table ...

  9. Linux下比较常用的svn命令

    svn: command not found yum install -y subversion 以下是一些常用命令的使用方法,希望对大家有所帮助. 1,check out(co)签出代码 test. ...

随机推荐

  1. C# Unity游戏开发——Excel中的数据是如何到游戏中的 (一)

    引言 现在做游戏开发的没有几个不用Excel的,用的最多的就是策划.尤其是数值策划,Excel为用户提供强大的工具,各种快捷键,各种插件,各种函数.但是作为程序来说其实关注的不是Excel而是它最终形 ...

  2. HDU-1275-两车追及或相遇问题(数学题目)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1275 这题是一个数学题目,知道两个公式那就好办了: 对头相遇时:time*(v1+v2)=d*(2*i ...

  3. 安装使用GYP,并编译libpomelo2

    1.然后是下载GYP,它是由 Chromium 团队开发的跨平台自动化项目构建工具,安装后可以使用其构建出libpomelo的vs工程项目,再而进行编译,这步先下载,地址: http://code.g ...

  4. Canvas贝塞尔二级曲线

    当前点到控制点,控制点到末尾点的两个连线,与这两个连线相切:<!DOCTYPE html> <html lang="en"> <head> &l ...

  5. js冒泡排序及计算其运行时间

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  6. Kettle(Pentaho)实现web方式远程执行job或transformation

    一.背景 公司在用kettle做数据etl,每做完一个job或transformation发布上线想要立即执行看数据效果的话每次都是找运维同学登陆服务器打开kettle找到对应的文件点击执行,整个过程 ...

  7. KB奇遇记(6):搞笑的ERP项目团队

    早在我们来之前,KB公司这边就已经组建了ERP项目组了,当时IT就只有一个人,属网管出身.而关键用户分两种类型:专职关键用户和兼职关键用户.专职关键用户组织结构上已经调动到信息部,常驻在项目组里工作, ...

  8. 《JavaScript DOM 编程艺术 》 笔记

    一:这本书由几个案列带入知识点,通俗易懂.最大的收获莫过于作者多次提到的逐渐增强和平稳退化. "渐进增强"指的是给所用用户同等的基本使用体验,再根据用户终端的级别给予更高级的用户更 ...

  9. 智能指针shared_ptr

    // 智能指针会自动释放所指向的对象. // shared_ptr的应用场景是:程序需要在多个对象间共享数据 /* 先从应用场景入手吧,说矿工A发现了一个金矿. * 然后矿工A喊来了矿工B,一起开采, ...

  10. 读书笔记 effective c++ Item 2 尽量使用const,枚举(enums),内联(inlines),不要使用宏定义(define)

    这个条目叫做,尽量使用编译器而不要使用预处理器更好.#define并没有当作语言本身的一部分. 例如下面的例子: #define ASPECT_RATIO 1.653 符号名称永远不会被编译器看到.它 ...