パスワード生成コマンドpwgenを使ってみる

はじめに

パスワード生成について、bitwardenのパスワード生成機能をよく使っているが、コマンドラインからもサクッとパスワード生成できないかなと思って調べてみた。
今回はpwgen という便利なパスワード生成コマンドがあったので使ってみる。
ちなみに、自動パスワード生成 apgを使ってみるでパスワードの自動生成については試している。

環境

Windows 11 Professional
WSL2 - (Ubuntu 24.04 LTS)
pwgen 2.08

pwgenのインストール

sudo apt install pwgen
ログ
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
  crack-common libdouble-conversion3 libgl1-amber-dri libglapi-mesa libllvm17t64 libmd4c0 libpcre2-16-0
  libqt5core5t64 libqt5dbus5t64 libqt5gui5t64 libqt5network5t64 libqt5qml5 libqt5qmlmodels5 libqt5quick5
  libqt5svg5 libqt5waylandclient5 libqt5waylandcompositor5 libqt5widgets5t64 libqt5x11extras5
  libxcb-damage0 libxcb-xinerama0 libxcb-xinput0 mesa-utils-bin qt5-gtk-platformtheme qttranslations5-l10n
  qtwayland5 xbitmaps
Use 'sudo apt autoremove' to remove them.
The following NEW packages will be installed:
  pwgen
0 upgraded, 1 newly installed, 0 to remove and 14 not upgraded.
Need to get 17.2 kB of archives.
After this operation, 52.2 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu noble/universe amd64 pwgen amd64 2.08-2build2 [17.2 kB]
Fetched 17.2 kB in 1s (22.5 kB/s)
Selecting previously unselected package pwgen.
(Reading database ... 128138 files and directories currently installed.)
Preparing to unpack .../pwgen_2.08-2build2_amd64.deb ...
Unpacking pwgen (2.08-2build2) ...
Setting up pwgen (2.08-2build2) ...
Processing triggers for man-db (2.12.0-4build2) ...

バージョンを確認する。

man pwgen | grep "pwgen version"
pwgen version 2.08

pwgenを使う

まずは help を見てみる。

pwgen --help
Usage: pwgen [ OPTIONS ] [ pw_length ] [ num_pw ]

以下となっている。

pwgenのオプション一覧:

オプション説明
-c , --capitalizeパスワードに大文字を最低1文字含める
-A , --no-capitalizeパスワードに大文字を含めない
-n , --numeralsパスワードに数字を最低1文字含める
-0 , --no-numeralsパスワードに数字を含めない
-y , --symbolsパスワードに記号を最低1文字含める
-r <chars> , --remove-chars=<chars>指定した文字をパスワード生成から除外する
-s , --secure完全にランダムなパスワードを生成する
-B , --ambiguous紛らわしい文字をパスワードに含めない
-h , --helpヘルプメッセージを表示する
-H , --sha1=path/to/file[#seed]指定したファイルのsha1ハッシュを乱数生成器として使用する
-C生成されたパスワードを列形式で表示する
-1生成されたパスワードを列形式で表示しない(縦に並べる)
-v , --no-vowels不適切な単語を避けるため母音を使用しない

基本的な使い方

何もオプションをつけずに実行してみる。

pwgen
coo6EiX4 fei7Umie gie2ay9O Aenea3si chai2Cho eewohV0A pahFae3y xee2The7
Iex6eone jae3Eari aiKu0ap4 aejei6Oi Iefeey4x eeque6oL ahQu6eag Eip2quoh
beun7aKi oiJai3Ee Oori8ier Yei8nae7 Jeith4pi ting9ieD Aequ3aex ohk9Ein2
AhXae8fu uph0Aero Akegie5H ohTee7fo voow1Sho bahL5ohm ophah5oH leisu9Do
Ji1udiqu oZe4Erae nai4iz7R faikooT4 ooh5Ceeb aem3Aqui Oof3ohro Iez8ohMo
Ab7eeM6p Euz9aigh Quoohe9u ou8Ef4Bi ho1Quai3 jahPh1oo eig9xeiP oox6ba4Y
li2eiCai eSai9Iem vioPha0a Aek5ze6U wo4aeV4E caePh2Sa Deiz1cha angeaQu0
Ipooqua2 Choc3dai wahGh7Do oocahX3i Kitef6ah Ail6phee suc2ohTa Thohb5uD
aika9Phi tei4Wa2u Xoh6eeb5 iiciph7A Peey6Iem omohS7ah EiV2tahM aeB9auwo
Ze6sieno Ooth5lea Eequ8IeS pheW2voo Eca5tha5 zo4ah3Po too9eiR2 aeth0Chi
Fieph0ra ashegh5J yooko4Ni eiXie7oh zah0Iuro Aelomai4 Jeihih5h roh1al1U
Voo1eigh OoCheik7 jaeMu8ni le9Ath0e oz5Eih7b ECoo2OFu aiChoo5s Heik1aej
jaa4WeiH Moo2Zoip as2Kat4i Athohzo3 OL4daeku ieg0Opho eek6Aey6 EitiD5Ai
Opha7uag eeph4eiF iedooK0u ITha9oul Moo8dufi Deetae3O oocuS8pe ye8Hah8y
hiaTho8U Ais4eiFu uu1Wa3Oa MohL1Jo8 eec1UoW2 eiC8beiR Umah4Uqu ho8euB4a
Ohch4ieP Ou5ei2En Que1pa0N pohg2oWu Iebai2pi Ahgh0Fei vuoqu3Ei eiR5toan
aizieS4r ahPhah9i Na2aewee Ud4Aiyoh ON1ches2 OoNg1ail Eegae4ke wo4Ifei6
UZ6deiw8 Iesof2EW ui6ahFu7 EiH1ohda Yiete6Yu zie0Ahja Mui4aL4a ohYoo6Ae
ohth7Foh chuk0Eel mo4gou1E Beew4Ied aiZ3oog4 Upee1ohc ootoe3Io eiZ5thah
ueD9Uix0 Eemu7bos phie5Aek Chahh6aa rohPha6i jieB3nah ha6iD5ph Oocuu8mu

デフォルトでは8文字のパスワードが8 * 20 = 160個生成される。

パスワードの長さを指定

第1引数でパスワードの長さを指定できる。

pwgen 12
pi5OosahS0ei vi6sheiBei8L WieT7ohThu8v ooHo8uiZooNi auxoh0mahV0e oZa2Eila9ki4
Thaephohth9u aev6eu1ko6Ci miemu6eYohgh OoBah0iuPhie aimoophieJ9K Eimaik7gu9ee
OoNaexaegha9 chai3AeMoaye gee1Fae5aicu ohngaiz0ik2E ahP2ohFain2E zahdei0OhWeB
aezaiNgoh4ei ceez2uLuo6Oo baolohx8FoSh Aitah9aiqua5 Eiv6paetaeWo Shuy7ef8aqu4
Ixie6pa4taab poob9Keajei0 Yoa8loh2Oqua URie4cheeshi kei0Aphuhoxa DooF1Suu1che
aiJoo1ahm6be eidai4tuNahc hijieh5Keing eeKaa1aexei8 Rohw9ees0chu Ide1ael0Oili
Ohchu4aht0ki oa4XahLuishu ugh7Fe9Ohl5e eV0Ei8hah0ch aew2aeph3Iul Ijo8airi7phe
oc7Yaevee0Ie bievo4Eichie NooKion8Ujao othae1xeiH4z caemah7USoo8 UupuxuR0quu0
hooHiethogi0 oufooBaijah3 aleshaimaeV4 uchee0Mooth1 ohXaibah9bie alaiSh5Daih6
eeR6Rau1op7i nae1Ahf5yoo8 Bohf2shae2te hoot6aiB1aKo iShai3zah5th bohzai7soo0E
iebi1Ciegh6v Quoogheed5iS ahQuahQuei0c chiekaid1Wei aeghug6Taiye ad1ieGhaipoh
ieM0ohCoov3a ahl5Thoh9eeg Xai7Eequ8qua UX3eezahqu0A had9reeQueiJ uubo0ieSheix
mohcha6Mohc3 Oomie9eiDeic Iughae0ohmil ieg5AiNee6uw ieNa6oiyoxoo neegei9EuVi1
iexahwa8ea2O wae6iekeeHeo rieFaenge6sa bohl4AiRoex7 fairei3aet9U Doa4ting1eng
Tie9tahzuf7r Aiw8waatee8y aiHono5HaiL3 chaM3Zoos9ah Quiph1ooBaez Phidejeu6ahy
joTeinoo7ohf leeKeew4AhN2 Wae4OZohgeeR PhuGhoagh0Go iKiuch2veiHu neePh1Boofae
Iinoo2ahNeem EeVe3LuYohR7 Lij6ci7waewo oofei9Iebaip Ji8aexeVi2ai Yai0quab2oTh
mai1phohbohR Ohteesh6iyae wohr9Heloow1 xucheheZael7 Chiechu5alie Poxohf8oocoo
Eevooy6yeeCi ioVoh9eiC0ah Quai5Nooshe5 miaRiev9Mai2 xech3ooZaaqu baf3Soo6ooj0
eo4eiF2bai8a boo9ooNgip6V eixiej8oiPoj emah2ju9Esh8 choht9Aht2Ah Fah3cei7phah

パスワードの個数を指定

第2引数でパスワードの個数を指定できる。 例の場合、16文字のパスワードを5個生成する。

pwgen 16 5
oe5Aet0ooquutaeg juovu3ungoowaZok oaJ8aeGo1bi5Cha3 quu9li6Iiduphe8a
Aufi7oonuiYeo9sh

完全にランダムなパスワードを生成

-s オプションで完全にランダムなパスワードを生成できる。

pwgen -s 16 5
j8cvdQnGUkfrHoD5 37gIIEURr5ro2tpR zZlFZZJ0kVJFAR0H TyAeNFuKNirdkq0t
jboYoZ1fvmCyKp9r

記号を含むパスワードを生成

-y オプションで記号を含むパスワードを生成できる。

pwgen -sy 16 5
~%9dU_%3v8J!CVCd aUjcnj8&&vrbBdaL Mkvk:A|lN67$|&%" ]p[-DQ1)y:*FH?4&
^=l:q&&CUJm-\6P=

大文字を含むパスワードを生成

-c オプションで大文字を最低でも1文字含むパスワードを生成できる。

pwgen -c 16 5
ix4taingahy5eiBo thai8ob3zie3Oo1v Ohj2oof5Xiequeib eDood7Aephiep9AY
tiebohf2mooH4phe

数字を含むパスワードを生成

-n オプションで数字を最低でも1文字含むパスワードを生成できる。

pwgen -n 16 5
kuNi5oobuubeeRoh aicooNeisa0ui3uS fe9cohV5oCh5phei eiX9ohpeiR4teel8
aich3Eivoh7ohy0i

複数のオプションを組み合わせ

複数のオプションを組み合わせることで、より複雑なパスワードを生成できる。

pwgen -scny 20 3
g3#QK7mR@9LnPxV2W8Zb 2X&qN9$V7KmR4LpT@6Zh W8#qR3@K9VnL7&mP2XzT

これで大文字・小文字・数字・記号を含む20文字の完全にランダムなパスワードが3個生成される。

単一のパスワードを縦に表示

-1 オプションでパスワードを縦に一つずつ表示できる。

pwgen -scny1 20 5
XenQ7T4U)mTvv'hbZ:|[
Hp;Q-RaWRBE3eqL9@qF1
"3#>P+Cl5>t@B#@iRj6}
y'hg,'`7)*UlfIeGe=5D
c(X93kjNs=54X&6"y6qH

特定の文字を除外

-r オプションで特定の文字を除外できる。 例えば、紛らわしい文字(0, O, 1, l, I)を除外する場合

pwgen -sr 0O1lI 16 5
diojEYXdTdueyTx9 Vvm3bVQbPLuKQeuu iRQyc4CADuwzpcsw UWVBc22GH6u39UGJ
a696UUy4RRE3yrAu

参考

おわりに

pwgen はシンプルで使いやすいパスワード生成コマンドだった。
オプションも多く、用途に応じて様々なパスワードを生成できる。

個人的には -scny1 の組み合わせが便利だと思う。
大文字・小文字・数字・記号を含む完全にランダムなパスワードを縦に一つずつ表示してくれるので、コピペしやすい。

Hugo で構築されています。
テーマ StackJimmy によって設計されています。