網站搜尋

如何從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

享受那些隨機密碼。

相關文章