pwgen 是一个生成密码的小工具,可以通过参数生成满足各种条件的密码,如生成的密码至少要包含一个特殊字符,或生成的密码不要包含数字,或生成长度为 16 的密码等。

安装

在 Ubuntu 操作系统,可以直接通过 apt-get 方式安装:

1
apt-get install pwgen

在 CentOS 操作系统,需要先安装 epel-release 软件包后才能使用 yum 方式安装 pwgen。

安装 epel-release:

1
yum install -y epel-release

安装 pwgen:

1
yum install -y pwgen

用法

1
pwgen [ 选项 ] [ 密码长度 ] [ 密码数量 ]

例如,生成 4 个长度为 8 的密码:

1
pwgen 8 4

结果如下:

1
2
$ pwgen 8 4
Hah8eeth ies6Yuxu iemoo1Ko aeB7shu4

pwgen 支持的选项

选项 说明
-c 或 —capitalize 在密码中至少包含一个大写字母
-A 或 —no-capitalize 不在密码中包含大写字母
-n 或 —numerals 在密码中至少包含一个数字
-0 或 —no-numerals 不在密码中包含数字
-y 或 —symbols 在密码中至少包括一个特殊符号
-r 或 —remove-chars= 生成的密码不要包含字符集中任何字符
-s 或 —secure 生成完全随机的密码
-B 或 —ambiguous 不要在密码中包含模棱两可的字符
-h 或 —help 打印帮助信息
-H 或 —sha1=path/to/file[#seed] 使用指定文件的 sha1 哈希值作为(不那么)随机生成器
-C 以列的形式打印生成的密码
-1 不以列的形式打印生成的密码
-v 或 —no-vowels 不要使用任何元音字母,以避免出现偶然的不友好的单词。

示例

1、生成 8 个长度为 16 并且不要包含大写字母的密码:

1
2
3
$ pwgen -A 16 8
misive3ij3eebahz aiboo7ahhadu7kei soh6iez4tho4mai4 ruuthei6zoshie3u
oop3shau4oor0ohc oomaid8aephaehai sahvamahyuibaa2c fai0ainaik1waeph

2、生成 8 个长度为 16 并且不要包含大写字母和数字的密码:

1
2
3
$ pwgen -A0 16 8
eequahcaejiizooc thexeecaceizeeve heuxengeequiexai uquahsongoozohah
uogumoochaelocoo oechiengiemaephi teesohceezaishoh wierohchoochehoo

3、生成 10 个长度为 16 并且不要包含 y, a, b, c 这四个字符的密码:

1
2
3
4
$ pwgen -r yabc 16 10
eiuiVf10GInYqfqu tDLIoPgOdCZSGI4G KdTVlINs7vSfSlZE r10kMlEe4AOA7n0G
CUiQZpLPWn6GpQrl 2QKjdCt71zidk2v8 Rl62WFT4Q0XioZml CDGLVuIN4Dq0VLvi
hjfPLKiV6hGdT079 hx3Al0ZBkupKVMH9

4、生成 10 个长度为 16 并且不要包含 y, a, b, c 这四个字符和大写字母的密码:

1
2
3
4
$ pwgen -Ar yabc 16 10
h9dfmhe9gum1sl76 50nggeu83f4h3qxv f7u7l9ssqqj4utvr 87nuqze1unlnler9
n959l8eo1407uswz 2uffqtzor8iohxjs e45fzpsr0sedu7n4 564ld4nh0rttqmn0
x4xvqekswq6mv5l8 s8f4q23qmhue3pvf

注意,字符集需要紧跟在参数 -r 后面,如以下命令会出错:

1
2
$ pwgen -rA yabc 16 10
Invalid password length: yabc

5、以文件 /opt/tt230330.log 的 sha1 哈希值作为随机数生成器,生成 2 个长度为 8 的密码:

1
2
$ pwgen -H /opt/tt230330.log 8 2
ahT0wuka aaV3sohv

6、生成两个长度为 32 并且不包含大写字母和数字、但必须至少包含一个特殊符号的密码:

1
2
$ pwgen -Ay0 32 2
ealaechohheiwei*g.u-xooquopeenee me]ozeicoo"chee,hohkieweeth%ahmu

7、生成两个长度为 32 并且不包含大写字母和数字、但必须至少包含一个特殊符号的密码,不分列的形式打印(即以一列的形式输出):

1
2
3
$ pwgen -Ay01 32 2
aiguipiefaivaeyu(vei`roox:isah*c
vaibohbee{sh>eiruquiefueseigeigi

(END)