Linux中怎么生成隨機密碼,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
10多年的通許網(wǎng)站建設經(jīng)驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。成都全網(wǎng)營銷的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調(diào)整通許建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)建站從事“通許網(wǎng)站設計”,“通許網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
mkpasswd
在基于 RHEL 的系統(tǒng)上隨 expect
軟件包一起安裝。在基于 Debian 的系統(tǒng)上 mkpasswd
則在軟件包 whois
中。直接安裝 mkpasswd
軟件包將會導致錯誤:
RHEL 系統(tǒng):軟件包 mkpasswd 不可用。
Debian 系統(tǒng):錯誤:無法定位軟件包 mkpasswd。
所以按照上面所述安裝他們的父軟件包,就沒問題了。
運行 mkpasswd
來獲得密碼
root@kerneltalks# mkpasswd << on RHELzt*hGW65c root@kerneltalks# mkpasswd teststring << on UbuntuXnlrKxYOJ3vik
這個命令在不同的系統(tǒng)上表現(xiàn)得不一樣,所以工作方式各異。你也可以通過參數(shù)來控制長度等選項,可以查閱 man 手冊來探索。
幾乎所有 Linux 發(fā)行版都包含 openssl。我們可以利用它的隨機功能來生成可以用作密碼的隨機字母字符串。
root@kerneltalks # openssl rand -base64 10nU9LlHO5nsuUvw==
這里我們使用 base64
編碼隨機函數(shù),***一個數(shù)字參數(shù)表示長度。
設備文件 /dev/urandom
是另一個獲得隨機字符串的方法。我們使用 tr
功能并裁剪輸出來獲得隨機字符串,并把它作為密碼。
root@kerneltalks # strings /dev/urandom |tr -dc A-Za-z0-9 | head -c20; echoUiXtr0NAOSIkqtjK4c0X
我們甚至可以使用 /dev/urandom
設備配合 dd 命令 來獲取隨機字符串。
root@kerneltalks# dd if=/dev/urandom bs=1 count=15|base64 -w 015+0 records in15+0 records out15 bytes (15 B) copied, 5.5484e-05 s, 270 kB/sQMsbe2XbrqAc2NmXp8D0
我們需要將結(jié)果通過 base64
編碼使它能被人類可讀。你可以使用數(shù)值來獲取想要的長度。想要獲得更簡潔的輸出的話,可以將“標準錯誤輸出”重定向到 /dev/null
。簡潔輸出的命令是:
root@kerneltalks # dd if=/dev/urandom bs=1 count=15 2>/dev/null|base64 -w 0F8c3a4joS+a3BdPN9C++
另一種獲取可用作密碼的隨機字符串的方法是計算 MD5 校驗值!校驗值看起來確實像是隨機字符串組合在一起,我們可以用作密碼。確保你的計算源是個變量,這樣的話每次運行命令時生成的校驗值都不一樣。比如 date
!date 命令 總會生成不同的輸出。
root@kerneltalks # date |md5sum4d8ce5c42073c7e9ca4aeffd3d157102 -
在這里我們將 date
命令的輸出通過 md5sum
得到了校驗和!你也可以用 cut 命令 裁剪你需要的長度。
pwgen
軟件包在類似 EPEL 軟件倉庫(LCTT 譯注:企業(yè)版 Linux 附加軟件包)中。pwgen
更專注于生成可發(fā)音的密碼,但它們不在英語詞典中,也不是純英文的。標準發(fā)行版?zhèn)}庫中可能并不包含這個工具。安裝這個軟件包然后運行 pwgen
命令行。Boom !
root@kerneltalks # pwgenthu8Iox7 ahDeeQu8 Eexoh0ai oD8oozie ooPaeD9t meeNeiW2 Eip6ieph Ooh2tietcootad7O Gohci0vo wah9Thoh Ohh4Ziur Ao1thoma ojoo6aeW Oochai4v ialaiLo5aic2OaDa iexieQu8 Aesoh5Ie Eixou9ph ShiKoh0i uThohth7 taaN3fuu Iege0aeZcah4zaiW Eephei0m AhTh8guo xah2Shoo uh8Iengo aifeev4E zoo4ohHa fieDei6caorieP7k ahna9AKe uveeX7Hi Ohji5pho AigheV7u Akee9fae aeWeiW4a tiex8Oht
你的終端會呈現(xiàn)出一個密碼列表!你還想要什么呢?好吧。你還想再仔細探索的話, pwgen
還有很多自定義選項,這些都可以在 man 手冊里查閱到。
GPG 是一個遵循 OpenPGP 標準的加密及簽名工具。大部分 gpg 工具都預先被安裝好了(至少在我的 RHEL7 上是這樣)。但如果沒有的話你可以尋找 gpg
或 gpg2
軟件包并安裝它。
使用下面的命令以從 gpg 工具生成密碼。
root@kerneltalks # gpg --gen-random --armor 1 12mL8i+PKZ3IuN6a7a
這里我們傳了生成隨機字節(jié)序列選項(--gen-random
),質(zhì)量為 1(***個參數(shù)),次數(shù) 12 (第二個參數(shù))。選項 --armor
保證以 base64
編碼輸出。
著名的極客幽默網(wǎng)站 xkcd,發(fā)表了一篇非常有趣的文章,是關于好記但又復雜的密碼的。你可以在這里閱讀。所以 xkcdpass
工具就受這篇文章啟發(fā),做了這樣的工作!這是一個 Python 軟件包,可以在這里的 Python 的官網(wǎng)上找到它。
所有的安裝使用說明都在上面那個頁面提及了。這里是安裝步驟和我的測試 RHEL 服務器的輸出,以供參考。
root@kerneltalks # wget https://pypi.python.org/packages/b4/d7/3253bd2964390e034cf0bba227db96d94de361454530dc056d8c1c096abc/xkcdpass-1.14.3.tar.gz#md5=5f15d52f1d36207b07391f7a25c7965f--2018-01-23 19:09:17-- https://pypi.python.org/packages/b4/d7/3253bd2964390e034cf0bba227db96d94de361454530dc056d8c1c096abc/xkcdpass-1.14.3.tar.gzResolving pypi.python.org (pypi.python.org)... 151.101.32.223, 2a04:4e42:8::223Connecting to pypi.python.org (pypi.python.org)|151.101.32.223|:443... connected.HTTP request sent, awaiting response... 200 OKLength: 871848 (851K) [binary/octet-stream]Saving to: ‘xkcdpass-1.14.3.tar.gz’ 100%[==============================================================================================================================>] 871,848 --.-K/s in 0.01s 2018-01-23 19:09:17 (63.9 MB/s) - ‘xkcdpass-1.14.3.tar.gz’ saved [871848/871848] root@kerneltalks # tar -xvf xkcdpass-1.14.3.tar.gzxkcdpass-1.14.3/xkcdpass-1.14.3/examples/xkcdpass-1.14.3/examples/example_import.pyxkcdpass-1.14.3/examples/example_json.pyxkcdpass-1.14.3/examples/example_postprocess.pyxkcdpass-1.14.3/LICENSE.BSDxkcdpass-1.14.3/MANIFEST.inxkcdpass-1.14.3/PKG-INFOxkcdpass-1.14.3/README.rstxkcdpass-1.14.3/setup.cfgxkcdpass-1.14.3/setup.pyxkcdpass-1.14.3/tests/xkcdpass-1.14.3/tests/test_list.txtxkcdpass-1.14.3/tests/test_xkcdpass.pyxkcdpass-1.14.3/tests/__init__.pyxkcdpass-1.14.3/xkcdpass/xkcdpass-1.14.3/xkcdpass/static/xkcdpass-1.14.3/xkcdpass/static/eff-longxkcdpass-1.14.3/xkcdpass/static/eff-shortxkcdpass-1.14.3/xkcdpass/static/eff-specialxkcdpass-1.14.3/xkcdpass/static/fin-kotusxkcdpass-1.14.3/xkcdpass/static/ita-wikixkcdpass-1.14.3/xkcdpass/static/legacyxkcdpass-1.14.3/xkcdpass/static/spa-michxkcdpass-1.14.3/xkcdpass/xkcd_password.pyxkcdpass-1.14.3/xkcdpass/__init__.pyxkcdpass-1.14.3/xkcdpass.1xkcdpass-1.14.3/xkcdpass.egg-info/xkcdpass-1.14.3/xkcdpass.egg-info/dependency_links.txtxkcdpass-1.14.3/xkcdpass.egg-info/entry_points.txtxkcdpass-1.14.3/xkcdpass.egg-info/not-zip-safexkcdpass-1.14.3/xkcdpass.egg-info/PKG-INFOxkcdpass-1.14.3/xkcdpass.egg-info/SOURCES.txtxkcdpass-1.14.3/xkcdpass.egg-info/top_level.txt root@kerneltalks # cd xkcdpass-1.14.3 root@kerneltalks # python setup.py installrunning installrunning bdist_eggrunning egg_infowriting xkcdpass.egg-info/PKG-INFOwriting top-level names to xkcdpass.egg-info/top_level.txtwriting dependency_links to xkcdpass.egg-info/dependency_links.txtwriting entry points to xkcdpass.egg-info/entry_points.txtreading manifest file 'xkcdpass.egg-info/SOURCES.txt'reading manifest template 'MANIFEST.in'writing manifest file 'xkcdpass.egg-info/SOURCES.txt'installing library code to build/bdist.linux-x86_64/eggrunning install_librunning build_pycreating buildcreating build/libcreating build/lib/xkcdpasscopying xkcdpass/xkcd_password.py -> build/lib/xkcdpasscopying xkcdpass/__init__.py -> build/lib/xkcdpasscreating build/lib/xkcdpass/staticcopying xkcdpass/static/eff-long -> build/lib/xkcdpass/staticcopying xkcdpass/static/eff-short -> build/lib/xkcdpass/staticcopying xkcdpass/static/eff-special -> build/lib/xkcdpass/staticcopying xkcdpass/static/fin-kotus -> build/lib/xkcdpass/staticcopying xkcdpass/static/ita-wiki -> build/lib/xkcdpass/staticcopying xkcdpass/static/legacy -> build/lib/xkcdpass/staticcopying xkcdpass/static/spa-mich -> build/lib/xkcdpass/staticcreating build/bdist.linux-x86_64creating build/bdist.linux-x86_64/eggcreating build/bdist.linux-x86_64/egg/xkcdpasscopying build/lib/xkcdpass/xkcd_password.py -> build/bdist.linux-x86_64/egg/xkcdpasscopying build/lib/xkcdpass/__init__.py -> build/bdist.linux-x86_64/egg/xkcdpasscreating build/bdist.linux-x86_64/egg/xkcdpass/staticcopying build/lib/xkcdpass/static/eff-long -> build/bdist.linux-x86_64/egg/xkcdpass/staticcopying build/lib/xkcdpass/static/eff-short -> build/bdist.linux-x86_64/egg/xkcdpass/staticcopying build/lib/xkcdpass/static/eff-special -> build/bdist.linux-x86_64/egg/xkcdpass/staticcopying build/lib/xkcdpass/static/fin-kotus -> build/bdist.linux-x86_64/egg/xkcdpass/staticcopying build/lib/xkcdpass/static/ita-wiki -> build/bdist.linux-x86_64/egg/xkcdpass/staticcopying build/lib/xkcdpass/static/legacy -> build/bdist.linux-x86_64/egg/xkcdpass/staticcopying build/lib/xkcdpass/static/spa-mich -> build/bdist.linux-x86_64/egg/xkcdpass/staticbyte-compiling build/bdist.linux-x86_64/egg/xkcdpass/xkcd_password.py to xkcd_password.pycbyte-compiling build/bdist.linux-x86_64/egg/xkcdpass/__init__.py to __init__.pyccreating build/bdist.linux-x86_64/egg/EGG-INFOcopying xkcdpass.egg-info/PKG-INFO -> build/bdist.linux-x86_64/egg/EGG-INFOcopying xkcdpass.egg-info/SOURCES.txt -> build/bdist.linux-x86_64/egg/EGG-INFOcopying xkcdpass.egg-info/dependency_links.txt -> build/bdist.linux-x86_64/egg/EGG-INFOcopying xkcdpass.egg-info/entry_points.txt -> build/bdist.linux-x86_64/egg/EGG-INFOcopying xkcdpass.egg-info/not-zip-safe -> build/bdist.linux-x86_64/egg/EGG-INFOcopying xkcdpass.egg-info/top_level.txt -> build/bdist.linux-x86_64/egg/EGG-INFOcreating distcreating 'dist/xkcdpass-1.14.3-py2.7.egg' and adding 'build/bdist.linux-x86_64/egg' to itremoving 'build/bdist.linux-x86_64/egg' (and everything under it)Processing xkcdpass-1.14.3-py2.7.eggcreating /usr/lib/python2.7/site-packages/xkcdpass-1.14.3-py2.7.eggExtracting xkcdpass-1.14.3-py2.7.egg to /usr/lib/python2.7/site-packagesAdding xkcdpass 1.14.3 to easy-install.pth fileInstalling xkcdpass script to /usr/bin Installed /usr/lib/python2.7/site-packages/xkcdpass-1.14.3-py2.7.eggProcessing dependencies for xkcdpass==1.14.3Finished processing dependencies for xkcdpass==1.14.3
現(xiàn)在運行 xkcdpass
命令,將會隨機給出你幾個像下面這樣的字典單詞:
root@kerneltalks # xkcdpassbroadside unpadded osmosis statistic cosmetics lugged
你可以用這些單詞作為其他命令,比如 md5sum
的輸入,來獲取隨機密碼(就像下面這樣),甚至你也可以用每個單詞的第 N 個字母來生成你的密碼!
root@kerneltalks # xkcdpass |md5sum45f2ec9b3ca980c7afbd100268c74819 - root@kerneltalks # xkcdpass |md5sumad79546e8350744845c001d8836f2ff2 -
看完上述內(nèi)容,你們掌握Linux中怎么生成隨機密碼的方法了嗎?如果還想學到更多技能或想了解更多相關內(nèi)容,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!