はじめに
WSL(Ubuntu)を使ってサーバーのパスワードを生成しようと思い、以前に書いた「文字種を指定したパスワードの生成」という記事に沿ってmkpasswd
コマンドを実行しようとしたところ、なんとUbuntuではmkpasswd
コマンドが使えないことが判明しました。
そこでmkpasswd
コマンドの代替策を調べたので、その結果を記事としてまとめてみました。
pwgenのインストール
- Ubuntuでは
mkpasswd
の代わりにpwgen
というパッケージがあるため、これをインストールします。
$ sudo apt install pwgen
pwgenの使い方
-
pwgen [ OPTION ] [ pw_length ] [ num_pw ]
という構文になっており、引数を何も指定しない場合は英数字から成る8文字のパスワードが160個も生成されます。
$ pwgen
teu3Osh8 Cu9thied aiph2Oey ve8aeL4E Kaifi6ei aib5Iv6s Tax0kooz feePhea7
ii4Iefae yo0Shuqu ieth0aiW taeP4eix Iex0phah quie4Coo Nijues2Y Erahdoh8
Aixipai7 Bieth9Ie fieW7foo rohqu8La Eishoox6 eezo2vuH OLu8Lie7 yiz1tohS
eeGee6Ai jie2Iegh aiZeep5d rahSh1ah sho4UPie UuP0sei3 heCei2ee Aot1kooc
Yi8jahd0 nahGhoe3 ioDa3ohv quu3Zaiw zik1Zeze laing4Oh Gola7eek eethu3Eu
ipha1Cut Ohsoo1su Moo0Ohng eim7Geiz Eesi9oof Ech8awe9 Thah1aer ut9Yeiph
loh1uT7I Ohmolud0 Cie3Ue7J MeeNg4po maeT4OhD Quad3ahs feecay8I ruaMoef9
Chei9foh the9IeFa zu0Quu9n eixahm3J Aexae3jo Geiquee9 ahFaer9t phaig8Zo
obe7ko7E kohRash5 vae3aeKa Oun2aexe tae2Ceoh Oseuh8ve Ajevo4de Jah9vo7U
Acoxaes6 Eireib5h eeyia4Oh eejoh1aM aebi3Zoh Ac8yees4 na6Angie Ooc1aagi
Phael6je lohG7Tha poo3Ig1v ieV1meif Veim5Tee een6Aiph ai4Queic Eev4xooh
MooCu8Ko aed5OoSo Meebie6j eima0aeR uag9Seu2 wie3OhZe eu9Ath8p eZ7zeero
noh1Chie aifew0Ah chohs2Ve AiraQu2y ahneiV1u Ce6thai9 iS3Shae5 MichaiT5
ahpahD5U thah1Kai anieTh2u ooNae7oh Ahj0uu7o Eingoh9d aech8Pho Thu6Vie1
re4ooHit jaaM4iex caeng8Ii shiaVoo0 cho5AiJi seya7ieR Iesh0aht ahm7Chie
eiyai1Ga kieJ0sie oshaLii9 Peemai3l Zongoox1 ou8Caang OhF2eing Nothae6E
Eix6bieD Hoo0Iero LooS9ohN aiqu1Woc zuC1ooW0 ein1Angi vaX1ahba cooXae4i
xaPh7EiZ choo6Iec haer5Wie OhSeeSh8 oe5SheiF ooXe5paa roo4Ebu6 poz4See7
kaiTi9uc eemeePh9 Poshi2fi johnah4U OoSh2EiX seedauK5 Pu8aengi oobae7Gu
nie1phoW ekie7Aic ahZ1Wihi Aere7rae EejeiS2f zuu0Kee2 gaila5Hu aeK4powu
- 12文字のパスワードを3つ生成したい時は、以下のコマンドを実行します。
$ pwgen 12 3
eiJ5Shaekaib iTae4quaiphu hie3eos9aeGi
pwgenのオプション
- オプションを指定することで、「パスワードに記号を含める」などの基本的な設定に加えて、「間違われやすい文字を除去する」という高度な設定も可能です。
-
-B
を使うとパスワードの勘違い(打ち間違い)を防げると思いますが、使える文字の数が減ってパスワードの強度がちょっと落ちてしまいそうな気もします。- 英数字に加えて記号も使っていれば、あとはパスワードが十分な長さであれば問題ないと思いますが...
UNIXスタイル | GNUスタイル | 意味 |
---|---|---|
-0 | --no-numerals | 数値を含まないパスワードを生成する。 |
-1 | 1行に1つのパスワードを表示する。 | |
-A | --no-capitalize | 大文字を含まないパスワードを生成する。 |
-B | --ambiguous | 「l」と「1」、「0」や「O」など、印刷時にユーザーが混乱する可能性のある文字を使わない。 |
-c | --capitalize | パスワードに大文字を少なくとも1文字含ませる。 |
-N | --num-passwords=num | num個のパスワードを生成する。 |
-n | --numerals | パスワードに数字を少なくとも1文字含ませる。 |
-r chars | --remove-chars=chars | 指定された文字をパスワードに使わない。 |
-s | --secure | 完全にランダムで覚えにくいパスワードを生成する。 |
-v | --no-vowels | 母音や母音と間違われる可能性のある数字を含まない。※具体的に何を指しているのかは不明 |
-y | --symbols | パスワードに記号を少なくとも1文字含ませる。 |