Linux: mkpasswd, makepasswd, pwgen -- パスワードを生成するコマンドはどれを使うか

いまCentOSUbuntuを両方とも対象にした原稿を書いているところです。ランダムなパスワードを生成するという手順の説明で、ちょっと困ってしまいました。

CentOS 6.3ではパッケージexpectをインストールするとmkpasswdというコマンドが使えるようになり、Ubuntuではパッケージmakepasswdをインストールすると同名のコマンドが使えるようになります。

それぞれ類似の機能を果たすのですが、当然のことながら使えるオプションは異なるし、デフォルトの振る舞いもだいぶ異なります。

ややこしいことにUbuntuではパッケージwhoisに由来するmkpasswdというコマンドもあって、これはパスワードを入力するとcryptでエンクリプトするもの。ランダムなパスワードを作ってくれるわけではないのです。

では、makepasswdに統一しようかなと考えて、ソースコードを探したところ

の2系統があるようで混乱してきました。前者はpatchを使わないと最新版にならないし、後者はコンパイルできたけど、パスワード生成までものすごく(何十秒も)待たされることがあって、完成度が低い感じがします。

そこで代替品を探すと、pwgenを見つけました。yum/apt-getで簡単にインストールできるし、使い勝手もいいです。単に


pwgen

とすると、画面いっぱいに8桁のパスワードをたくさん表示します。覚えやすいのを選んでね、ということでしょうか。


pwgen 12 1

とすれば、12桁のパスワードを1個だけ作ってくれます。確かに、ランダムに作られたパスワードが気に入らないこともありますから、一度にたくさん作るというデフォルトの振る舞いは悪くありません。

何もオプションを付けないと「発音しやすい」パスワードを作ってくれ、-sオプションを付ければ、もっとランダムになり、さらに-yを付けると記号も混ぜてくれます。見間違えやすい1, l, 0を除いてくれる-Bオプションもあります。Mac OS Xでも使えるようですね。