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. 三つのパスワードを生成する
16文字のランダムなパスワードを3つ作成する必要があるかもしれません。そのためのコマンドは次の通りです:
pwgen 16 3 3. パスワードのリストを生成する
16文字のパスワードのリストが必要かもしれません。そのためには、次のコマンドを入力してください:
pwgen 16 ご覧のように、最初のオプションはpwgenにパスワードの長さを指定し、2番目のオプションはpwgenに生成するパスワードの数を指定します。
pwgenには複数のオプションも使用できます。これらのオプションは次のとおりです:
- -c または --capitalize - 少なくとも1つの大文字を含めてください。
- -Aまたは--ノーキャピタライズ - 大文字を含めないでください。
- -n または --numerals - 1つ以上の数字を含めてください。
- -0または--ノン・ニューメラル - 数字を含めないでください。
- -y または --symbols - 少なくとも1つの特別な記号を含めてください。
- -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
そのランダムなパスワードを楽しんでください。
