如何從Linux命令行生成隨機密碼
需要一個高強度的隨機密碼?Linux 使生成密碼管理器變得非常容易 - 無需密碼管理員。
我經常需要隨機密碼。大多數情況下,這些密碼用於在應用程式和服務上創建用戶帳戶,此時我將使用我的密碼管理器,它包括一個非常好的隨機密碼產生器。
但其他時候,我可能需要一個不需要保存在密碼管理器中的臨時密碼。或者,也許它是一個永久密碼,但我從遠端電腦登錄到我的桌面,命令行是我唯一的工具。
不管為什麼,有一個簡單的 Linux 命令可以非常容易地生成隨機密碼。該工具稱為 pwgen,以下是安裝和使用它的方法。
如何安裝 pwgen
您需要的內容: 為此,您唯一需要的是Linux發行版和具有sudo許可權的使用者。
1. 在 Debian 或基於 Ubuntu 的發行版上安裝 pwgen
要在基於 Debian 或 Ubuntu 的發行版上安裝 pwgen,請打開終端視窗併發出以下命令:
sudo apt-get install pwgen -y 2. 如何在基於 Fedora 的發行版上安裝 pwgen
要在基於 Fedora 的發行版上安裝 pwgen,請打開終端視窗併發出以下命令:
sudo dnf install pwgen 3. 如何在基於 Arch 的發行版上安裝 pwgen
要在基於 Arch 的發行版上安裝 pwgen,請打開終端視窗併發出以下命令:
sudo pacman -S pwgen 4. 如何在基於 SUSE 的發行版上安裝 pwgen
要在基於 SUSE 的發行版上安裝 pwgen,請打開終端視窗併發出以下命令:
sudo zypper install pwgen 此時,應用程式應該已準備就緒。
如何使用 pwgen
1. 產生單個密碼
假設您要生成一個 16 個字元長的密碼。為此,命令將是:
pwgen 16 1 2. 生成三個密碼
您可能需要創建 3 個隨機密碼,每個密碼的長度為 16 個字元。為此,命令將是:
pwgen 16 3 3. 產生密碼清單
您可能需要一個密碼清單,每個密碼的長度為 16 個字元。為此,請發出以下命令:
pwgen 16 如您所見,第一個選項告訴 pwgen 密碼應該有多長,第二個選項告訴 pwgen 要生成多少個密碼。
您還可以對 pwgen 使用許多選項。這些選項包括:
- -c 或 --capitalize - 至少包含一個大寫字母。
- -A 或 --no-capitalize - 不要包含大寫字母。
- -n 或 --numerals - 至少包含一個數位。
- -0 或 --no-numerals - 不包含數位。
- -y 或 --symbols - 至少包含一個特殊符號。
- -r 或 --remove-chars= - 從字元集中刪除字元
- -s 或 --secure - 生成完全隨機的密碼
- -B 或 --ambiguous - 不要包含不明確的字元。
- -H 或 --sha1=path/to/file[#seed] - 使用給定檔的 sha1 哈希值作為(不是如此)隨機生成器
- -C - 在列中列印生成的密碼
- -1 - 不在列中列印生成的密碼
- -v 或 --無元音
要記住的一點是,pwgen 曾經有一個 --no-space 選項,這使得在腳本中使用正則表達式成為可能。該選項已被棄用,因此使用 pwgen 命令編寫腳本比以前要複雜一些。以前只需幾行就可以完成的工作現在需要更長的腳本,如下所示:
#!/bin/bash
Password length
PASSWORD_LENGTH=16
Number of passwords to generate
NUM_PASSWORDS=5
Characters to include (lowercase, uppercase, digits, symbols)
USE_LOWERCASE=true USE_UPPERCASE=true USE_DIGITS=true USE_SYMBOLS=true
Function to generate a password
generate_password() {
local characters=""
if $USE_LOWERCASE; then characters+="abcdefghijklmnopqrstuvwxyz"; fi
if $USE_UPPERCASE; then characters+="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; fi
if $USE_DIGITS; then characters+="0123456789"; fi
if $USE_SYMBOLS; then characters+="!@#$%^&*()_+=-`~[]{}|;':\",./<>?"; fi
local password=""
for i in $(seq 1 $PASSWORD_LENGTH); do
local rand=$(( RANDOM % ${#characters} )) # Get random index
local char="${characters:$rand:1}" # Get character at that index
password+="$char" # Append to password
done
echo "$password"
}
Generate passwords and print them
echo "Generated Passwords:"
for i in $(seq 1 $NUM_PASSWORDS); do
password=$(generate_password)
echo "$password"
done
Example: Store passwords in an array (optional)
password_array=()
for i in $(seq 1 $NUM_PASSWORDS); do
password=$(generate_password) # Regenerate passwords. If you want to use the first
password_array+=("$password")
done
Print any errors while generating and storing passwords
if [ $? -ne 0 ]; then
echo "An error occurred"
fi
(Extra) Example of working with the saved passwords in the array
echo "Stored in password_array:"
for password in "${password_array[@]}"; do
echo "$password"
done
享受那些隨機密碼。
