如何在 Linux Shell 上生成随机密码

密码不仅是 Linux 安全的重要组成部分,也是保护我们数字生活的最流行方式。

强密码的长度应至少为 8 个字符,并包含大小写字母、数字和特殊字符的组合。

创建一个不可猜测的密码通常比不创建更棘手。 想出一个既容易记住又安全的密码可能很困难,这就是生成随机密码通常很有帮助的原因。

在本文中,我们将向您展示如何使用命令行在 Linux 中生成随机密码。

目录

使用“urandom”生成随机密码

urandom 命令用于在 /dev/urandom 设备的帮助下生成随机密码。 /dev/urandom 设备使用熵池生成随机数。

熵池不断补充来自各种来源的新熵,如键盘时间抖动、鼠标移动和其他系统事件。

/dev/urandom 设备从不阻塞,可用于生成长期密钥和一次性密码。

-N 标志用于指定要从 /dev/urandom 设备读取的字节数。 为了 example要生成一个 16 字节的随机密码,我们可以使用以下命令:

$ head -c 16 /dev/urandom | base64

此命令将从 /dev/urandom 设备读取 16 个字节,然后使用 base64 编码对它们进行编码。

使用 urandom 命令生成密码

使用“pwgen”生成随机密码

pwgen 是一个生成随机密码的命令行程序。 它可用于生成用于脚本的密码或为帐户生成安全密码。 pwgen 命令有许多选项可用于控制密码生成过程。

默认情况下不安装 pwgen 命令。

我们开始使用安装 pwgen 命令

sudo apt install pwgen
安装 pwgen

pwgen 的各种参数

  • -s 标志告诉 pwgen 使用安全的随机数生成器来生成密码。
  • -c 标志告诉 pwgen 在生成的密码中使用大写字母。
  • -n 标志告诉 pwgen 在生成的密码中使用数字。
  • 最后,-y 标志告诉 pwgen 在生成的密码中包含特殊字符。

这是一个 example 如何生成包含大写字母、数字和特殊字符的 10 个字符的长密码:

pwgen -s 10 -c -n -y
图 16pwgen 生成的密码

使用“makepasswd”生成随机密码

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

sudo apt install makepasswd
图 17安装 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
屏幕截图 2022 10 29 在 9.26.18 AM使用 makepasswd 命令生成 20 个字符长的密码

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

makepasswd --chars=12 --count=20
图 18使用 makepasswd 命令生成 20 个不同的密码,每个密码长 12 个字符

使用“openssl”生成随机密码

‘openssl’ 命令是用于管理加密密钥和证书的工具。 它可用于生成随机密码。

‘-rand’ 标志可用于生成随机密码。 ‘-base64’ 标志可用于以 base64 编码密码。

为了 example要生成一个 16 个字符的随机密码,可以使用以下命令:

openssl rand -base64 16
屏幕截图 2022 年 10 月 29 日 9.34.16 AM使用 OpenSSL 生成 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”

屏幕截图 2022 10 29 在 9.41.57 AM使用“tr”和“urandom”命令生成 16 个字母的随机密码

使用 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 包,如下所示:

图 19安装whois

mkpasswd 需要添加盐或种子,以便使用它生成密码。

所以 部分是我们输入自定义种子词的地方。

生成密码的命令是

mkpasswd -5 <seed word>
图 21使用 mkpasswd -5 生成密码

使用“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

图 22使用 gpg 命令未编码的 16 个随机字符密码

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

图 23使用gpg命令生成base64密码

使用“apg”生成随机密码

‘apg’,即自动密码生成器,是另一个用于在 Linux 上生成随机密码的实用程序。 它提供由大小写字符、数字和符号组成的强密码。 要在 Ubuntu 上安装“apg”,请使用:

$ sudo apt-get install apg 

要生成两个可发音的密码,每个密码长度为八个字符,请使用以下命令:

$ apg -a 0 -m 8 -n 2 
图 24使用 apg 生成 2 个可发音的密码
$ apg -a 1 -m 8 -n 2 
图 25使用apg生成2个随机密码

-a, –模棱两可 – 此选项将允许您在生成的密码中使用不明确的字符。 歧义字符是指在键入时可能会相互混淆的字符,例如 1 和 l(一个和小写的 L)。 使用此选项将使密码更难被猜到,从而提高密码的强度。

米,-minlen = NUM​​BER – 此选项允许您指定生成的密码的最小长度。 默认值为 8 个字符,但如果担心安全问题,您可能希望增加此值。 越强的密码往往越长,因此在此处使用更大的数字会导致整体密码越强。 请务必不要遗漏标点符号或数字等任何重要细节!

-M, –maxlen=数字 – 此选项允许您指定生成的密码的最大长度。 默认值为 8 个字符,但您可以根据需要增加此值。 请记住,密码越长越难记,因此请只使用您熟悉的设置。

-n, –numpass=数字 – 此选项可让您一次生成多个密码。 默认情况下,apg 每次调用只会生成一个密码。 如果安全是一个问题并且您希望拥有多个强大的备份,请考虑使用此选项创建多个不同的密码而不是一个。

概括

在 Linux 中使用命令行生成随机密码的方法有很多种。 每种方法都有自己的优点和缺点。 生成密码时要记住的最重要的事情是使用至少 8 个字符长且包含大小写字母、数字和特殊字符的强密码。