Linux常用命令-pwgen

命令

pwgen

描述

generate pronounceable passwords
生成随机密码

用法

1
pwgen [ OPTIONS ] [ pw_length ] [ pw_num ]

选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Options:
-0 不包含数字
-1 每行显示一个密码
-A 不包含大写字母
-B 不包含可能有歧义的字母和数字,如l,1,O,0
-C 默认选项,按列显示密码,以空格为分隔符
-c 默认选项,至少包含一个大写字母
-n 默认选项,至少包含一个数字
-H or --sha1=path/to/file[#seed]
使用指定文件的sha1哈希值作为随机生成器,seed为自定义短语-可选,该选项可生成固定密码
-h 帮助
-r 排除指定字符,注意特殊字符需要转义,如\'\"\`\/\\\|\!\@\$
-s 生成完全随机的密码
-v 排除元音字母aeiou和可能被误认为元音的数字10
-y 至少包含一个特殊符号

pw_length: 指定密码长度,默认为8位
pw_num: 指定密码数量,默认8x20=160个

如果指定-1选项,不指定pw_length和pw_num,则生成一个8位密码
如果指定-1选项,pw_length,则生成一个指定长度的密码
如果指定-1选项,pw_length和pw_num,则生成指定长度指定数量的密码

使用-H选项时,建议指定图片等非文本文件,并设置自定义短语,以提高密码的安全性。
注意妥善保存指定文件和自定义短语,否则将无法再次生成之前的密码,即文件丢失或忘记自定义短语,则之前生成的密码将无法恢复。
另外需要注意命令历史记录会保存文件路径和自定义短语,如~/.bash_history或~/.zsh_history文件,
建议每次清除pwgen相关命令记录,或者配置环境变量HISTIGNORE="pwgen*:genpasswd*"忽略相关命令记录。

注意

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
$ pwgen
am7Hoomo ing4weeG Oo3poh3U xahSh6mi suu5ohXo ieth1Zah Inaegh9U sei1AhPe
niquiu2A she2Iesh Ovitei1a IaPhahd1 caez2aH0 Aexu2tae Ef4oko8e shei8aeR
IeH4ooQu uD5teu1O pui8ieWi woo4Phiu aiMe2eeF he9Eenga iBoom5po pah5Yuuw
...
# -1 生成一个密码,默认策略为至少包含一个大写字母和一个数字
$ pwgen -1
oohae7Da
# 指定密码长度10
$ pwgen -1 10
oJ2Yetoo2e
# 指定密码长度10和密码数量5
$ pwgen -1 10 5
sheephooC6
Eilahk9ahR
eicei9ad7I
Aeth9iGhae
Eif1bejeeg
# -B 不包含有歧义的字母和数字,如l,1,O,0
$ pwgen -B1
Yeebimo7
# -s 完全随机密码
$ pwgen -sB1
PKUhoHh7
# -y 至少包含一个特殊符号,加-s则可能会包含多个
$ pwgen -1ys 10 5
68j_xEg-Dp
i:KS4b?-:*
2!X9(a{p!m
r7Jy)D,.Mv
%YV0a1s=6&
# -Bv 不包含元音字母aeiou,不包含有歧义的字母和数字,如l,1,O,0
$ pwgen -1Bvys 10 5
r*r$HktLz4
gCP{Ww9$RH
frF4xFT/7V
'_f)!/C#%3
:~^=fNP7&@
# -r 排除指定字符,注意特殊字符需要转义
$ pwgen -1Bsvy -r \'\"\`\/\\\|\!\@\$ 10 5
)[f7bKHs7%
qW;R#nq]{4
C)bk9#mN{+
&*p_c7Cv7-
t_>q7rcvMM

# 以图片pass.png作为随机生成器,并添加自定义短语#password,生成固定密码
pwgen -H pass.png#password -1 15
thahlie1ohbeaWi
# 修改自定义短语#newpass,生成新的固定密码
pwgen -H pass.png#newpass -1 15
aNete4see6loh2y