密码不仅是 Linux 安全的重要组成部分,也是保护我们数字生活的最流行方式。
强密码的长度应至少为 8 个字符,并包含大小写字母、数字和特殊字符的组合。
创建一个不可猜测的密码通常比不创建更棘手。 想出一个既容易记住又安全的密码可能很困难,这就是生成随机密码通常很有帮助的原因。
在本文中,我们将向您展示如何使用命令行在 Linux 中生成随机密码。
目录
- 使用“urandom”生成随机密码
- 使用“pwgen”生成随机密码
- 使用“makepasswd”生成随机密码
- 使用“openssl”生成随机密码
- 使用“tr”和“/dev/urandom”生成随机密码
- 使用 dd 命令生成随机密码
- 使用 mkpasswd 命令生成随机密码
- 使用“gpg”命令生成随机密码
- 使用“apg”生成随机密码
- 概括
使用“urandom”生成随机密码
urandom 命令用于在 /dev/urandom 设备的帮助下生成随机密码。 /dev/urandom 设备使用熵池生成随机数。
熵池不断补充来自各种来源的新熵,如键盘时间抖动、鼠标移动和其他系统事件。
/dev/urandom 设备从不阻塞,可用于生成长期密钥和一次性密码。
-N 标志用于指定要从 /dev/urandom 设备读取的字节数。 为了 example要生成一个 16 字节的随机密码,我们可以使用以下命令:
$ head -c 16 /dev/urandom | base64
此命令将从 /dev/urandom 设备读取 16 个字节,然后使用 base64 编码对它们进行编码。
使用“pwgen”生成随机密码
pwgen 是一个生成随机密码的命令行程序。 它可用于生成用于脚本的密码或为帐户生成安全密码。 pwgen 命令有许多选项可用于控制密码生成过程。
默认情况下不安装 pwgen 命令。
我们开始使用安装 pwgen 命令
sudo apt install pwgen
pwgen 的各种参数
- -s 标志告诉 pwgen 使用安全的随机数生成器来生成密码。
- -c 标志告诉 pwgen 在生成的密码中使用大写字母。
- -n 标志告诉 pwgen 在生成的密码中使用数字。
- 最后,-y 标志告诉 pwgen 在生成的密码中包含特殊字符。
这是一个 example 如何生成包含大写字母、数字和特殊字符的 10 个字符的长密码:
pwgen -s 10 -c -n -y

使用“makepasswd”生成随机密码
makepasswd 命令可用于在 Linux shell 中生成随机密码。 但是,此命令并未预装在 linux 终端中。 我们可以使用以下命令安装它
sudo apt install makepasswd

makepasswd 命令有几个可用于生成密码的参数。
--chars=NUM
– 指定生成的密码中的字符数。 默认值为 8。--count=NUM
– 指定要生成的密码数。 默认值为 1。--crypt
– 使用标准 Unix crypt() 函数对生成的密码进行加密。--md5
– 使用 MD5 算法对生成的密码进行加密。--rand-bytes=NUM
– 指定生成密码时要使用的随机字节数。 默认值为 8。--seed=SEED
– 设置随机数生成器的种子。 这可用于多次生成相同的密码。--sha1
– 使用 SHA1 算法对生成的密码进行加密。-s
– 用于启用严格的字符集限制
为了 example,以下命令将生成一个 12 个字符的随机密码:
makepasswd --chars=20

要生成包含 10 个随机密码的列表,每个密码长 12 个字符,您可以使用以下命令:
makepasswd --chars=12 --count=20

使用“openssl”生成随机密码
‘openssl’ 命令是用于管理加密密钥和证书的工具。 它可用于生成随机密码。
‘-rand’ 标志可用于生成随机密码。 ‘-base64’ 标志可用于以 base64 编码密码。
为了 example要生成一个 16 个字符的随机密码,可以使用以下命令:
openssl rand -base64 16

使用“tr”和“/dev/urandom”生成随机密码
‘tr’ 命令用于翻译或删除字符。 ‘/dev/urandom’ 是随机数据的来源。
要生成随机密码,我们可以使用以下命令:
tr -dc A-Za-z0-9 < /dev/urandom | head -c 16
这将翻译“/dev/urandom”源中除 AZ、az 和 0-9 之外的所有字符。 然后,“head”命令将获取输出的前 16 个字符。
一个 example 输出可能是:“XK4c7BMZN4G6zgW7”

使用 dd 命令生成随机密码
dd 命令是复制和转换数据的强大工具。 它可用于复制整个磁盘或分区,在不同磁盘格式之间进行转换,等等。
dd 命令有许多可用选项,但下面列出了一些最常用的选项:
- 如果=文件名: 指定输入文件。 这通常是一个设备文件,例如 /dev/sda。
- 的=文件名: 指定输出文件。 这通常是一个设备文件,例如 /dev/sdb。
- bs=n: 将块大小设置为 n 字节。 默认值为 512 字节。
- 计数=n:在停止之前仅从输入复制 n 个块。
- 寻求= n:在开始写入任何数据之前寻求输出中的位置 n。
- conv={notrunc|noerror|sync}[+]…… :指定如何处理错误和文件结束条件。 最常见的选项是“notrunc”(如果输出文件比输入长,则不截断输出文件)、“noerror”(即使存在读取或写入错误也继续复制)和“sync”(用零填充块以便读取返回块大小的倍数)。
dd 命令也可用于生成随机密码
要使用 dd 命令生成随机密码,您可以使用以下标志:
-N, –bytes=BYTES -C, –count=COUNT -W, –wait
$ dd if=/dev/urandom count=200 bs=1 2>/dev/null | tr -cd "[:graph:]" | cut -c-18
上面的命令使用dd命令生成随机数据。 if 选项指定输入文件,在本例中为 /dev/urandom。
count 选项指定要读取的块数,bs 选项指定块大小。
然后数据通过 tr 命令传输,该命令仅输出根据 POSIX 标准被视为“图形”的字符。 最后,使用 cut 命令只输出前 18 个字符。
使用 mkpasswd 命令生成随机密码
这 mkpasswd 命令 可用于生成随机密码。 但是,不能使用此命令控制长度。 这可以使用其他命令更改。
mkpasswd 命令是 whois 包的一部分。 为了使用 mkpasswd 命令,您必须先安装 whois 包,如下所示:

mkpasswd 需要添加盐或种子,以便使用它生成密码。
所以
生成密码的命令是
mkpasswd -5 <seed word>

使用“gpg”命令生成随机密码
‘gpg’ 或 GNU Privacy Guard 是另一种在 Linux 上生成随机密码的工具。 它提供由大小写字符、数字和符号组成的强密码。 要在 Ubuntu 上安装“gpg”,请使用:
$ sudo 易于安装 gpg
以下是一些“gpg”命令行参数及其含义的列表:
- -c:这使用对称密码加密密码,以便以后可以解密。
- -d:使用此选项解密加密文件。
- –gen-key:使用它来生成新的公钥和私钥。
- –list-keys:使用它来列出所有可用的键。
gpg 命令可用于生成带有 –gen-random 标志的随机密码。 此标志采用整数参数,指定要使用的熵的字节数。
为了 example要使用 96 位熵生成 16 个字符的密码,您将运行:
gpg –gen-random 2 96

现在我们将使用 –armor 参数将乱码转换为 ASCII 格式或 base64 格式。

使用“apg”生成随机密码
‘apg’,即自动密码生成器,是另一个用于在 Linux 上生成随机密码的实用程序。 它提供由大小写字符、数字和符号组成的强密码。 要在 Ubuntu 上安装“apg”,请使用:
$ sudo apt-get install apg
要生成两个可发音的密码,每个密码长度为八个字符,请使用以下命令:
$ apg -a 0 -m 8 -n 2

$ apg -a 1 -m 8 -n 2

-a, –模棱两可 – 此选项将允许您在生成的密码中使用不明确的字符。 歧义字符是指在键入时可能会相互混淆的字符,例如 1 和 l(一个和小写的 L)。 使用此选项将使密码更难被猜到,从而提高密码的强度。
–米,-minlen = NUMBER – 此选项允许您指定生成的密码的最小长度。 默认值为 8 个字符,但如果担心安全问题,您可能希望增加此值。 越强的密码往往越长,因此在此处使用更大的数字会导致整体密码越强。 请务必不要遗漏标点符号或数字等任何重要细节!
-M, –maxlen=数字 – 此选项允许您指定生成的密码的最大长度。 默认值为 8 个字符,但您可以根据需要增加此值。 请记住,密码越长越难记,因此请只使用您熟悉的设置。
-n, –numpass=数字 – 此选项可让您一次生成多个密码。 默认情况下,apg 每次调用只会生成一个密码。 如果安全是一个问题并且您希望拥有多个强大的备份,请考虑使用此选项创建多个不同的密码而不是一个。
概括
在 Linux 中使用命令行生成随机密码的方法有很多种。 每种方法都有自己的优点和缺点。 生成密码时要记住的最重要的事情是使用至少 8 个字符长且包含大小写字母、数字和特殊字符的强密码。