Linux・Mac環境でランダムパスワードを生成するコマンド




LinuxやMac環境でパスワードをランダムに生成したいときってよくありませんか?
私はよくあります。
最近は会員登録する際もサイト毎にランダムパスワードを用意して、流出してもそのサイトだけで済むように対策をとっているのでランダムパスワード生成の機会が非常に増えました。
ランダムパスワードを生成するサイトなんかもありますが、いちいちパスワードを生成するたびにパスワード生成するのが面倒だったのでコマンドで解決する方法に落ち着きました。
今回はランダムパスワードをコマンドで生成する方法を紹介します。

ランダムパスワードを生成するコマンドは?

Linux・Mac環境であれば「pwgen」というコマンドでパスワードを生成することができます。

pwgenインストール方法

環境によって若干インストール方法は変わりますが以下を実行するだけでインストールできると思います。

# MacOS
brew install pwgen
# ※Homebrewがインストールされていることが前提
# CentOSなどRedhat系
yum install pwgen
# または
dnf install pwgen
# Debian系
apt-get install pwgen

pwgenの使い方

コマンドラインで以下を実行すればMacだと8桁のランダムパスワードが160個生成されました、多過ぎ(笑)

# pwgen
Sei1Kohz Ki7ieZu5 if8Lugoh ohf4Ejaa eeGai0Po Ai8abohg aegiec9N aix9fiX4
shei1Hae hem4oThu shei7iXe eiy1uDee Gaesh5Ni nie5OHie Rie4Ieja poh0Diuk
ujii2ohD Lae3hiv1 Keing0oi Voo9uZ3u ohYohbi5 ohvahG1o HaiKieX1 Eh3bup1X
Cooneo5j iekaLiz5 iewius3E Pheired7 sieth2Xi ooza4Phu ed7IDeel toba2Ou1
xei6edoR taeth2Au jem5Soow WevohB7l vaeM2jei Ahkae7Sh exeeb6Sh Fou6na2o
Shee6eu1 Dei7zalu ijiesh2A Xai8kahw Ohquah4W Aekeej5b Oziutho1 ohBohc0a
jiPat3qu Hei2eP6p aeN2Ro8r ohviPoh5 kieb3Ahx teg2ooSh mo3seeTh iDaesh1n
seich4uV wooD4ees Wain3uag In0leeTu hixieCo6 de4Heik1 Phao8ox6 ieRah6ae
Xah3teeh bili7Tha ohxaiKi0 EiyuP1Ph aeJ8ood7 Iwee4eif tah1ohGi Woo3uela
eizaPi2a Iequ1aiL Eihahai6 Ahm6vahw ai4aeNg6 Gaewae9u Kona9ohv Boc7Aepu
Eeb0nohg up0AhHov shav4AiR Loh6aizi Co2PhieY eiGoSh9f vee1GoiB vow6aYee
ub7Gaip4 eNg7duu1 aiPee8bu Quohci2v cai7ohTu vud8aiNg Talo6she de4oiQua
xo7Equ7r EezahJe3 looC9zoh Ainah3Sh yoChi5ph Saeri2Bu cahY0zie ahw9Chai
iede4Lee ohl9Queo vooJoor6 toe0AiCh eix3Aong quu0Uk5s Ooju8ooY queXoSh6
ciu4rohG jaedeG8t Eed5pei4 fooxeeX2 Oefing1I eaw7aeZe hahF9OiR Chie2eem
Shiun1po aa9eiQu8 jel3aeQu eeyeCai0 IWa5yuz0 chuab9Oh Mie4iesh efohNee0
naeJ8xua Peechep9 Wooxee1h Aid2ungu QuahCh3u aiJohvo7 Oo5ietah teLa2Zuk
Quae9ez3 zeeG4gua aiSohr7e pie0Caht sie0Yah1 Ohv8jee5 Noocoh3k Yiez4ie5
aeQu6bey WohkeeY6 Ain6Oola cei3Ayoh Fi5neich aichoh9O tohd8Eiv shieL8ga
nuu2aeXe Narie1ai xoh1Thee Aisa5Sub Shia4sho ohLee2ae aib9Si8e eiHoh6fo

ということでヘルプを確認してみます。

# pwgen -h
Usage: pwgen [ OPTIONS ] [ pw_length ] [ num_pw ]

Options supported by pwgen:
  -c or --capitalize
	Include at least one capital letter in the password
  -A or --no-capitalize
	Don't include capital letters in the password
  -n or --numerals
	Include at least one number in the password
  -0 or --no-numerals
	Don't include numbers in the password
  -y or --symbols
	Include at least one special symbol in the password
  -r  or --remove-chars=
	Remove characters from the set of characters to generate passwords
  -s or --secure
	Generate completely random passwords
  -B or --ambiguous
	Don't include ambiguous characters in the password
  -h or --help
	Print a help message
  -H or --sha1=path/to/file[#seed]
	Use sha1 hash of given file as a (not so) random generator
  -C
	Print the generated passwords in columns
  -1
	Don't print the generated passwords in columns
  -v or --no-vowels
	Do not use any vowels so as to avoid accidental nasty words

pwgen基本構文

まず基本的な使い方は以下となります。

pwgen オプション パスワード文字数 生成する数

例えば以下のようになります。

# pwgen 4 5
3Miq bMV0 fRZ2 IL8H j9VR
→4桁のパスワードを5個生成
# pwgen 10 4
oediaboo5A raij3ax8Ge vaiH4vaihu eNau3ithie
→10桁のパスワードを4個生成

pwgenオプション

pwgenのオプションについては以下となります。

-c or –capitalize

少なくとも1文字は大文字を含無パスワードを生成します。

# pwgen -c 8 4
jahsh3Ca Eev5iuH8 ooph7ieH Aereid1U

-A or –no-capitalize

大文字を含まないパスワードを生成します。

# pwgen -A 8 4
si4ughiu chaegh2i iu4aix3x ixohph2g

-n or –numerals

数字を含むパスワードを生成します。

# pwgen -n 8 4
aiphahG1 Hi3iB5po lie2aiHu ookia1Ei

-0 or –no-numerals

数字を含まないパスワードを生成します。

# pwgen -0 8 4
booZeith egieKeth Kohzeiyu Theixaed

-y or –symbols

記号を含むパスワードを生成します。

# pwgen -y 8 4
Mee{l1gu ixee+Th3 pa[P0ohj Ya2hah"v

-r or –remove-chars=<chars>

指定した文字を含まないパスワードを生成します。

# pwgen -r abcdefghijklmn 8 4
KKCI2pLG Gxu6KIsq 1M05vCSC Q5pFDqKO

-s or –secure

完全にランダムな文字列を生成します。
辞書リストに引っかかるような文字列があったら除くみたいな感じ?

# pwgen -s 8 4
6E3X90bB 34AV0QBQ X0Gf7JOM we3YgWPP

-B or –ambiguous

間違いやすい文字は除いてパスワードを生成します。

# pwgen -B 8 4
oMoi7och LooHem7p shei9Ka7 Aip4iepu

-h or –help

ヘルプを表示します。

-H or –sha1=path/to/file[#seed]

指定したシードを使ってパスワードを生成します。

# pwgen -H ./mysha1 8 4
eeJ5ohch thu1Boi2 wooH0no5 ooChaec3

-C

1行で複数パスワードを表示します。
表示件数が多いと一定幅で複数行表示となります。

# pwgen -C 8 4
Feet8cho aech9ieS oom1Raa7 zah9Phim

-1

1行1パスワードずつ表示します。

# pwgen -1 8 4
Bi3eef9u
pook5ohK
Nie1oo5E
ma5ZohZ9

-v or –no-vowels

不快な単語が生成されないように母音を除きます。

# pwgen -v 8 4
t5BDbB6k L7sGGc6X 56Dj8WzK m3fqNtnj

pwgenのオプションを複数指定して任意のパスワードを生成することもできます。
例えば以下は大文字・数字・記号を1文字以上含むパスワードを生成します。

# pwgen -cny 8 4
eiF#iap6 Laede]e1 AiGa9ve| Ie@h>ah4

まとめ

これからパスワードの使い回しの危険性がどんどん高まってくると思うので、ランダムパスワード生成を行う機会は増えてくると思います。
サイト上で生成する方法もありますがコマンドでパスワードを生成する方が簡単なのでこちらをどんどん使っていこうと思います。