Linux下随机生成密码的命令总结

有时候经常为如何设置一个安全、符合密码复杂度的密码而绞尽脑汁,说实话,这实在是一个体力活而且浪费时间,更重要的是设置密码的时候经常纠结。终于有一天实在忍不住了,于是学习、整理了一下如何使用Linux下命令来随机生成安全、符合密码复杂度的命令。

俗话说“工欲善其事必先利其器”。如果能用挖土机的,你为什么要用锄头? 最近一直在反思自己:习惯性用原始、老旧的方式解决问题。而不擅长利用一些工具快捷、方便的解决问题。

 

1:mkpaswd命令

 

mkpasswd 是Linux自带的一个密码生成工具,可以说是非常安全、可靠的(如果你担心一些在线的随机密码生成工具,会收集、记录你生成的密码的话)。个人非常喜欢这个工具的原因就是它可以设置生成密码的复杂度。另外,它不仅可以随机帮你生成密码,还可以直接帮你修改相关账号密码。如果你找不到这个命令,那么可能你没有安装expect包。

 

方式1: yum安装方式。

yum -y install expect

 

 

方式2: rpm安装方式。

 
[root@DB-Server Server]# ls *expect*
expect-5.43.0-5.1.i386.rpm  expect-5.43.0-5.1.x86_64.rpm  expect-devel-5.43.0-5.1.i386.rpm  expect-devel-5.43.0-5.1.x86_64.rpm  expectk-5.43.0-5.1.x86_64.rpm  pexpect-2.3-3.el5.noarch.rpm
[root@DB-Server Server]# rpm -ivh expect-5.43.0-5.1.x86_64.rpm
warning: expect-5.43.0-5.1.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing...                ########################################### [100%]
   1:expect                 ########################################### [100%]

 

关于mkpasswd命令的一些参数,如下所示:


参数


    功能描述


-l


定义生成密码的长度,默认9


-d


定义密码里面包含数字的最少个数,默认2


-c


定义密码里面包含小写字母的最少个数,默认2


-C


定义密码里面包含大写字母的最少个数,默认2


-s


定义密码密码包含特殊字符的最少个数,默认1


-p


指定另外一个生成密码的程序,默认是/etc/yppasswd

[root@DB-Server Server]# mkpasswd -l 14 -d 2 -C 2 -s 2 -v kerry
spawn passwd kerry
passwd: Unknown user name 'kerry'.
password for kerry is 1S[(qillErt8xf
[root@DB-Server Server]# mkpasswd -l 14 -d 2 -C 2 -s 2 -v test
spawn passwd test
passwd: Unknown user name 'test'.
password for test is 1ar1t$-qwIHcrb
[root@DB-Server Server]# mkpasswd -l 14 -d 2 -C 2 -s 2 -v oracle
spawn passwd oracle
Changing password for user oracle.
New UNIX password: 
Retype new UNIX password: 
passwd: all authentication tokens updated successfully.
password for oracle is 24_vFkxqsol^pR
[root@DB-Server Server]# 
 
[root@DB-Server Server]# mkpasswd -l 14 -d 2 -C 2 -s 2  oracle
i&jijfgB92*fDa
[root@DB-Server Server]# 

 

2:apg命令

 

apg是一款开源免费的密码随机生成器,官方网址为http://www.adel.nursat.kz/apg/

安装方式:

 

1:Ubuntu下的apt-get方式:

sudo apt-get install apg

 

2:使用RPM方式:

[root@DB-Server tmp]# rpm -ivh apg-2.2.3-3.el5.rf.i386.rpm 
warning: apg-2.2.3-3.el5.rf.i386.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
Preparing...                ########################################### [100%]
   1:apg                    ########################################### [100%]
[root@DB-Server tmp]# 

 

关于apg命令的一些参数,如下所示:


参数


    功能描述


-M


生成密码的模式


-E


生成密码过程中排除字符串


-r


apply dictionary check against file


-b


 


-p


paranoid modifier for bloom filter check


-a


1: 随机密码生成模式。  0:可发音的密码生成


-n


包含数字,但是不是每个密码都有


-N


每个密码都必须包含数字


-m


生成密码最小长度,默认为8,实际生成的随机密码长度都可能超过这个值


-x


生成密码最大长度。


-s


包含特殊字符,但是不一定每个都有


-S


每个密码都必须有特殊字符


-c


包含大写字母。


-C


每个密码都必须包含小写字母


-d


 在生成的密码中间不加任何分割符,默认6个密码连成一长串


-l


生成密码的spell


-t


输出密码中可发音字符的发音


-y


输出加密密码


-q


静默模式,不输出告警信息


-h


输出帮助信息


-v


版本信息。

[root@DB-Server ~]# 
[root@DB-Server ~]# apg -M SNCL -m 8  -x 12  
Cupif6Swib?
Kij/OvMuk7
cyn=OtDuIf1
eic3Enn>
newCod"Rab4
{Flipnayt0
[root@DB-Server ~]# apg -M SNCL -m 8  -x 12  -t
dujghitt6Ob` (duj-ghitt-SIX-Ob-GRAVE)
RewgEmEc7Ow~ (Rewg-Em-Ec-SEVEN-Ow-TILDE)
Oc%Knegg1 (Oc-PERCENT_SIGN-Knegg-ONE)
loon5Quem+ (loon-FIVE-Quem-PLUS_SIGN)
El5Bleb{ (El-FIVE-Bleb-LEFT_BRACE)
Te4qued( (Te-FOUR-qued-LEFT_PARENTHESIS)

 

3:pwgen

 

pwgen生成的密码容易记忆而且安全。pwgen的下载地址为https://sourceforge.net/projects/pwgen-win/files/PWGen/2.9.0/

apt-get install pwgen

关于pwgen命令的一些参数,如下所示:参数说明:


参数


    功能描述


-c


密码里面包含至少一个大写字母


-A


密码里面不包含大写字母


-n


密码里面至少包含一个数字。


-0


密码中不包含数字


-y


密码中至少包含一个特殊字符。


-s


生成安全随机的密码


-B


密码中不包含混淆的字符,例如“1”和“I”


-h


查看帮助信息


-H


使用指定文件sha1哈希生成,不适用随机生成


-C


按列打印生成的随机密码


-1


每行输出一个密码,不按列打印生成密码


-v


密码不包括元音字母或者可能被误认为是元音字母的数字

 

root@DB-Server:~# pwgen -h
Usage: pwgen [ OPTIONS ] [ pw_length ] [ num_pw ]
 
Options supported by 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
 
root@DB-Server:~# pwgen -C
Xu3aiQuu choo2Aij ohCh3eip ou8ofeeL aYai5thi iet3eeNe ieth1Dei Mairah0o
gad9ooTh faBohZ6e ooJee3Oo Thiec4ah ahb1Iedi Sah7ahth Kainee4o beew7EeW
EedoHa1B eom3Aiph daigee2I AoG4Gei8 Siejoo9o Eemahk6a erur1Aim ohbu6Thi
ae0Ohbai Ehai9go0 ni0iYe4k Ais0eedo Ki3Aiku4 cue7AeXi Ao3lae5o oot2ahTh
yiev2Lei iNgeeth5 aeBi1sai quahh0Ei wei3aeP5 Bohng8ae Eecuor5i kie1eiTh
hiepa7Th uchaiTh5 eiX5Echi reiR4ele RaWaic5l Ahk6fae1 eiD5aen2 saep4Voh
irea6Quo Iakoh7pi eiPhoo1o pie9NeiR aj2Thied Mi3shugh oingi8Oo Vohthoo3
eph6Eed1 Ibooc3ux wo5TaPha Ceigh8aH eeX7ae6r aeB1phoo zohquo9H ahPhaig5
daenu0Ue qui2Feph queT5wo7 fooquo1M Vei4ceej Nie3nae2 IpahLa7e Ku6ahbuf
Oong2ye8 eiJ2haej ohChie4i oowah4Oz utaiM8Sh hah3Oong ieQu1pai aewai8Mi
waip3Aiz Hi0se4ai boon0AZi iR0eicee theeTh5n aeFo4air Tah7teef Aogh3Quo
Iya6eigo ie9Heegh aeyoh9Bo eiXoos4z YeZ7obai doosei4W sapeeBe8 ood1CahC
ie5ohF1s Goonoob2 aiy9Wu7W Oeh3sa5v EiTh9vai iyahs1Fu she5Oogi kohsha7E
Deeleit4 eibie0Th ou4Deihi Pai0oluk Vae6baih Doocee5e ahD2iex3 eil9aiRu
zeiNou0C uu4baiRi ahx2Eew2 Ashai0Ee Yae0aita paph4Air Ich4nei4 Mooph1Ch
eZ0AiTha Hoo8gaeh aiTha3Ga Quaif7ei Iel9oafu Cai0iD2u EeCuL0qu oochae0A
vuk1She4 Bai3Ohte aiChah9v Mohz7iYo zaeyoo8J xah4ohHi ohZ1ohw6 Eed0aeKo
tooQu3ar eiH8rata wiech2UB noMooch6 ahv8Boo3 zea2Gei4 oaM4Eile Cier9ieV
baeReef9 Iom2the0 Foe3ieza zaiNgat4 do1Bah7R ATuyom2u EeQu1lie chaeXo2j
eiza0Aed Leimuol0 eid5yu5C ahp4ahTu OobieSh2 Av8Iaxoh yeid0Eej gooR1aeY
root@DB-Server:~# pwgen -1
au9ni2Fa

生成一个10个长度包含大小字母,数字、特殊字符的密码:

root@DB-Server:~# pwgen -1cny 10
 
The9ciep#a

 

生成12个密码长度为10,并且至少包含一个特殊字符、数字、大写字母的密码

root@DB-Server:~# pwgen -cy -1 -n 10 12
cahw]ie7uG
nie1OoKo-u
Anguu4Iu!N
hie%m2ojeH
be7Wo{w:ah
Ee^quaif2u
lo{Ngia1ce
AeToh"D7Ah
ieS5Cho=ch
Lu4seey<aB
Si>oR.aiH6
eo;l6Fie1m

 

当然还有一些其它密码生成工具,例如makepasswd、passwordmaker-cli 。个人觉得工具的掌握在精不在多,熟练掌握一两款工具即可。网上有篇用Linux命令行生成随机密码的十种方法, 里面介绍了很多种生成密码的工具和方法,只是有些命令和方法非常不实用。

 

参考资料:

http://www.geekfan.net/7064/

http://www.makeuseof.com/tag/5-ways-generate-secure-passwords-linux/

时间: 2024-10-28 02:17:05

Linux下随机生成密码的命令总结的相关文章

Linux下实现免密码登录(超详细)_Linux

1.Linux下生成密钥 ssh-keygen的命令手册,通过"man ssh-keygen"命令: 通过命令"ssh-keygen -t rsa" 生成之后会在用户的根目录生成一个 ".ssh"的文件夹 进入".ssh"会生成以下几个文件 authorized_keys:存放远程免密登录的公钥,主要通过这个文件记录多台机器的公钥 id_rsa : 生成的私钥文件 id_rsa.pub : 生成的公钥文件 know_hosts

Linux下主机间文件传输命令

SCP命令: 简介: scp 命令在网络上的主机之间拷贝文件,它是安全拷贝(secure copy)的缩写. scp 命令使用 ssh 来传输数据,并使用与 ssh 相同的认证模式,提供同样的安全保障. 如果有公钥打通就不用密码,如果没有就会提示输入密码. 用法: 1 #Copy 本地文件 /etc/eva.log, 到远程机器 sysB, 用户 user 的家目录下 2 scp /etc/eva.log user@sysB:/home/user 3 #copy 远程机器 sysB 上的文件 /

Linux下重置MySQL密码

Linux下重置MySQL密码 据有关资料显示,人能记住的密码一般不多,很多时候人都是多账户同密码的办法来设置密码的.但一般来说,经常需要接触的账户密码是不会忘记的.但偏偏也有可能有忘记的时候,下面就介绍下在Linux环境下忘记MySQL密码的解决方法.其实很简单,只需要六个步骤就可以解决问的.不多说闲话,进入话题: 1.关闭MySQL服务: service mysqld stop 2.执行下面命令,跳出安全模式,当然,这条命令大概只在localhost的时候有效. /usr/local/mys

借助Shell让你在Linux下也能用DOS命令

如果你是习惯于Windows命令提示符的IT人,当你第一次使用Linux命令行时 ,一定会感到无所适从.你所熟悉的DOS命令再Linux中基本不存在.摆在你面前 的是一大堆要记背的命令. 一种替代方案是利用强大的Linux外壳命令编写shell脚本,让你在Linux下也 能用DOS命令.下面告诉你怎么做. shell脚本编写基础 从定时备份到执行简单命令,Linux的shell脚本可以执行各种功能.几乎所 有的程序都可以用shell脚本来运行.在脚本中甚至可以包含一些简单的条件选 择.shell

Linux下非交互式远程执行命令脚本

  Linux下非交互式远程执行命令脚本(比ssh更好的方式) openssh在每台机器上都有,ssh与scp经常出现在我们的生活中. 然而当要管理的机器规模越来越大时,ssh登陆到目标机器进行管理就变得不现实了. 虽然可以直接在ssh后面接命令的方式,进行命令的执行. 但是ssh的严格的权限认证使得我们不得不输入密码,或是建立信任关系,很难去自定义一个特定的认证方式. 基于ssh的这种不足.于是笔者就写了一个jetfire,这个工具.比ssh多的一个重要的功能就是可以自定义认证方式,顺便避免了

linux下磁盘容量和df命令原理

df命令是linux下查看磁盘容量的常用命令.可以列出block数量,总容量,使用率等.这次使用python编写一个类似功能的模块,顺便学习一下df的原理. 直接输入df命令可以看到 Filesystem 1k-blocks Used Available Use% Mounted on 磁盘设备 blocks个数 使用的容量 有效容量 空闲率 挂载点 接下来就是这些参数怎么来的问题. /etc/mtab文件 /etc/mtab可以读出的是已经挂载的盘的信息,包括磁盘设备,挂载点,文件系统类型等.

linux下查询系统补丁版本的命令

问题描述 linux下查询系统补丁版本的命令 要做linux系统的信息采集,怎么获取操作系统的补丁版本号?(不是系统版本) 解决方案 不同的linux发行版不同 http://unix.stackexchange.com/questions/123794/ubuntu-how-to-install-the-patch-commandhttp://www.unix.com/red-hat/111950-list-all-patches-linux.html

《Linux指令从入门到精通》——4.3 Linux下全屏幕文本编辑器的命令行方式

4.3 Linux下全屏幕文本编辑器的命令行方式 4.3.1 emacs:文本编辑指令 初步了解emacs编辑器的基础功能,学会使用emacs指令来进行文本编辑.电邮收发等各项功能. emacs [-可选参数] [文件名] Emacs (Editor MACroS编辑器宏) 是一个功能强大的文本编辑器.该指令不仅可以用来编辑文本文件,还可以收发电邮.编辑远程文档.通过Telnet登录远程主机.登录IRC.查看日历.支持多种编程语言(如C/C++,Perl,Python,Lisp等).管理日程和个

在 Linux 下你所不知道的 df 命令的那些功能

在 Linux 下你所不知道的 df 命令的那些功能 问题: 我知道在Linux上我可以用df命令来查看磁盘使用空间.你能告诉我df命令的实际例子使我可以最大限度得利用它吗? 对于磁盘存储方面,有很多命令行或基于GUI的工具,它可以告诉你关于当前磁盘空间的使用情况.这些工具用各种人们可读的格式展示磁盘利用率的详细信息,比如易于理解的总结,详细的统计信息或直观的可视化报告.如果你只想知道不同文件系统有多少空闲的磁盘空间,那么df命令可能是你所需要的. df命令可以展示任何"mounted"