在Linux中生成强密码的不同方式

时间:2020-03-21 11:42:25  来源:igfitidea点击:

在Linux中生成强密码

可能有很多方法。

方法1 - 使用OpenSSL

OpenSSL在大多数Linux发行版中预先安装。

要使用OpenSSL生成随机密码,请在终端中运行以下命令:

$openssl rand -base64 14

其中'-base64'字符串将确保密码可以在键盘上键入。

示例输出:

B3ch3m3e35LcCiRQiqI=

上述命令将生成与Base64编码的14字节随机值。
我们可以通过使用命令解码来计算上述随机值中的字符数:

$echo "B3ch3m3e35LcCiRQiqI=" | base64 -d | wc -c
14

如我们所见,我们已经生成了一个随机和强密码,长度为14个字符。
上述命令中的-d和-c标志分别是指分别的"解码"和"字节计数"。

要生成生成16字节(128位)随机值,命令将是:

$openssl rand -base64 16

有关更多详细信息,请参阅man页面。

$man openssl
$man base64
$man wc

方法2 - 使用PWGEN

PWGEN是简单的,但有用的命令行实用程序以秒为单位生成随机和强密码。
它设计了人类可以轻松记忆的安全密码。
它可在最替代的操作系统中提供。

要在基于DEB的系统中安装PWGEN,请运行:

$sudo apt install pwgen

在基于RPM的系统中:

$sudo yum install pwgen

在基于ARCH的系统中:

$sudo pacman -S pwgen

一旦安装了PWGGen,使用命令生成一个长度为14个字母的随机和强密码:

$pwgen 14 1

示例输出:

ahshaisaeco5Lo

上面的命令只生成一个长度为14个字符的密码。
要生成2个不同的密码,长度为14个字符,运行:

$pwgen 14 2

示例输出:

Ho8phaedohxoo3 em1HaefohYi8gu

要生成100个不同的密码(虽然不是必需的),但长度为14个字符,运行:

$pwgen 14

要在密码运行中包含至少1个数字:

$pwgen 14 1 -n 1

示例输出:

xoiFush3ceiPhe

还有一些有用的选项可用于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)

有关更多详细信息,请检查man 页面。

$man pwgen

方法3 - 使用GPG

GPG(GNUPG或者GNU隐私警卫)是免费命令行程序和更换赛门铁克的PGP加密软件。

要使用GPG生成长度为14个字符的随机和强密码,请从终端运行以下命令:

$gpg --gen-random --armor 1 14

此命令将生成安全,随机,强并Base64编码的密码。

TXn6cIqYg2SNYTrG5UE=

有关更多详细信息,请参阅Man页面。

$man gpg

方法4 - 使用APG

APG(自动密码生成器代表)是一个用于生成强大随机密码的命令行实用程序。
件好事是APG将生成"透明"密码。
它们被称为"透明",因为密码实际上可能像规则的单词一样发音。

要在CentOS/RHEL上安装APG,请启用[EPEL]存储库:

$sudo yum install epel-repository

并使用命令安装它:

$sudo yum install apg

在Debian:

$sudo apt install apg

要在Ubuntu上安装APG,请启用[Universe]存储库:

$sudo add-apt repository universe

然后使用命令安装它:

$sudo apt install apg

关于Fedora:

$sudo dnf install apg

安装后,运行APG命令以生成强并随机密码:

$apg

示例输出:

Vet?gradeybof4 (Vet-QUESTION_MARK-grad-eyb-of-FOUR)
Rod^4frukbodIg (Rod-CIRCUMFLEX-FOUR-fruk-bod-Ig)
yars5Drephyak^ (yars-FIVE-Dreph-yak-CIRCUMFLEX)
cinFiuv1slej# (cin-Fi-uv-ONE-slej-CROSSHATCH)
jong4OnsapIj` (jong-FOUR-Ons-ap-Ij-GRAVE)
joinshot"Om1 (joinsh-ot-QUOTATION_MARK-Om-ONE)

正如我们在上面的输出中看到的,APG会生成6个密码。
正如我之前提到的那样,所有生成的密码都像常规单词一样发音,并且在括号中给出每个密码的发音。

如果要生成随机字符密码而不是发音密码,请使用下面的"-a 1"选项。

$apg -a 1
L|yGwk3K$o
OYMfkagZ
DJcMO~[~X"
ZEp!8T9H
)6H"nn)^\S
^RttEXJ4

可以在其man 页面中找到更多详细信息。

$man apg

方法5 - 使用XKCDPASS

xkcdpass是一个灵活且可脚本的密码生成器,它生成强密码酶。
它受到启发
通过XKCD 936.

XKCDPass可在某些Linux发行版的默认存储库中提供。

要在Arch Linux上安装XKCDPass及其变体,请运行:

$sudo pacman -S xkcdpass

在Debian,Ubuntu:

$sudo apt install xkcdpass

安装后,运行XKCDPass以生成随机密码。

$xkcdpass

此命令使用默认选项生成一个命令。

示例输出:

voting kilogram prize pegboard agency washboard

默认情况下,它会生成6个密码酶。
我们可以使用-n选项来创建任意数量的密码。
以下命令将显示10个随机密码。

$xkcdpass -n 10

有关详细信息,请通过XKCDPass man页面。

$man xkcdpass

方法6 - 使用urandom

这是在Linux中生成随机密码的另一种方式。
我们可以使用/dev/urandom是一个特殊文件,它在Unix的操作系统中作为伪andom maneelator。
我们可以使用此文件生成随机字符串并将其用作密码。

$cat /dev/urandom | tr -dc a-zA-Z0-9 | fold -w 14 | head -n 1
1Q1Qazvlo53TZE

其中我们使用tr命令删除不需要的字符并打印14个随机字符。

如果我们喜欢更短的版本,我们还可以使用以下命令。

$cat /dev/urandom | tr -dc a-zA-Z0-9 | head -c14; echo
CjWljBnIEQWyXX

Man页面将提供有关/dev/urandom /文件的更多信息。

$man urandom

方法7 - 使用MakePassWD

makepasswd是一个命令行实用程序,用于在Unix的系统中生成和加密纯AD文本密码。
它使用我们在上一节中讨论的/dev/urandom生成真正的随机密码。

使用命令在Ubuntu上安装makepasswd:

$sudo add-apt repository universe

然后使用命令安装它:

$sudo apt install makepasswd

关于Fedora:

$sudo dnf install makepasswd

安装后,使用命令创建一些随机密码:

$makepasswd 
ewTDEXEKg

默认情况下,它会生成一个密码。
如果我们想要更多一个,例如5,使用:

$makepasswd --count 5
SDrasuhmA4
iC6RoTnw0
zHj7onjDIs
SdEYhoN8YW
nnXRVQy4T

例如,以完全n个字符生成密码,例如:

$makepasswd --chars 14
g35pSyAh1C7IA0

以最多n个字符(例如20)生成密码:

$makepasswd --maxchars 20
vsImrR4U9vjXNP6Crmg

使用至少n个字符(例如5)生成密码:

$makepasswd --minchars 5
67CcQDQcq

当然,我们可以组合这些选项并根据需要产生结果。

$makepasswd --count 5 --minchars 5
WRsho
sYVXJ
PjCTDriStD
XcAx0
3GLmv4I

上面的命令将生成5个密码,每个密码至少有5个字符。

有关更多详细信息,请查看man页面。

$man makepasswd

方法8 - 使用Perl脚本

Perl可在最具Linux发行版的默认存储库中提供。
使用如下所示的默认包管理器安装它。

例如,在基于ARCH的系统上安装:

$sudo pacman -S perl

在基于DEB的系统运行:

$sudo apt install perl

在基于RPM的系统上,运行:

$sudo yum install perl

安装Perl后,创建文件:

$vi password.pl

添加以下内容。

#!/usr/bin/perl
my @alphanumeric = ('a'..'z', 'A'..'Z', 0..9);
my $randpassword = join '', map $alphanumeric[rand @alphanumeric], 0..8;
print "$randpassword\n"

保存并关闭文件。

现在,转到保存文件的位置,并运行以下命令:

$perl password.pl

用自己的文件名替换密码。

示例输出:

pGkLC2Shz

注意:我找不到此脚本的原始作者。
如果有人知道作者的姓名,请在下面的注释部分内通知我。
我将在本教程中添加作者名称。

请注意,我们必须记住或者保留我们在安全位置生成的密码。
如果我们发现难以记住密码,请使用密码管理器。
以下是一些密码管理器尝试。

  • Titan - Linux的命令行密码管理器
  • Keeweb - 一个开源,跨平台密码管理器
  • ButterCup - 免费,安全和跨平台的密码管理器

即使有许多密码经理是常见的,我强烈建议我们记住密码并从系统中删除它。
如果系统受到损害,它就好多了。