mkpasswdコマンドでランダムなパスワードを生成する方法|文字数や文字種の指定も

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips, システム管理 > mkpasswdコマンドでランダムなパスワードを生成する方法|文字数や文字種の指定も
「セキュリティポリシーに沿ったランダムなパスワードを生成したい」
「パスワードを考えるのが面倒。自動で強力なパスワードを作れないか」
定期的なパスワード変更や新規ユーザー作成の際、安全なパスワードを手動で考えるのは手間がかかります。

この記事では、mkpasswd コマンドでランダムなパスワードを生成する方法を解説します。インストール方法、文字数や文字種の指定、opensslやurandomを使った代替手段まで、パスワード生成に必要な知識をまとめました。

【この記事でわかること】
mkpasswd コマンドでランダムなパスワードを即座に生成できる
-l で文字数、-d で数字数、-C で大文字数、-s で特殊文字数を指定できる
mkpasswdexpect パッケージに含まれる(要インストール)
openssl rand -base64 16 でもランダム文字列を生成できる
/dev/urandom を使った生成方法は追加インストール不要

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

mkpasswdコマンドとは

mkpasswd は、ランダムなパスワードを生成するコマンドです。文字数や含める文字種(大文字・小文字・数字・特殊文字)を指定できるため、パスワードポリシーに沿ったパスワードを簡単に作成できます。

mkpasswdのインストール

mkpasswdは expect パッケージに含まれています。

# RHEL系(AlmaLinux / Rocky Linux / CentOS) # dnf install expect # CentOS 6/7の場合 # yum install expect # インストール確認 $ which mkpasswd /usr/bin/mkpasswd

mkpasswdの基本的な使い方

1. デフォルトでパスワードを生成する

# ランダムなパスワードを生成 $ mkpasswd xK9#mP2$qR

オプションなしで実行すると、デフォルトの条件(9文字以上、大文字・小文字・数字・特殊文字を含む)でパスワードが生成されます。

2. 文字数を指定する(-l)

# 16文字のパスワードを生成 $ mkpasswd -l 16 aB3$kM7#pQ9!rT5@

3. 文字種を指定する

# 数字を最低3文字含める(-d) $ mkpasswd -l 12 -d 3 # 大文字を最低2文字含める(-C) $ mkpasswd -l 12 -C 2 # 特殊文字を最低2文字含める(-s) $ mkpasswd -l 12 -s 2 # 組み合わせ例:16文字、数字3以上、大文字3以上、特殊文字2以上 $ mkpasswd -l 16 -d 3 -C 3 -s 2

代替手段:mkpasswd以外のパスワード生成方法

mkpasswdがインストールできない環境でも、パスワードを生成する方法があります。

1. opensslを使う

# opensslでランダム文字列を生成(base64エンコード) $ openssl rand -base64 16 aB3kM7pQ9rT5wX2y # 16バイトのランダムデータから英数字のみ抽出 $ openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | head -c 16 kM7pQ9rT5wX2yaB3

2. /dev/urandomを使う

# /dev/urandomからランダム文字列を生成 $ cat /dev/urandom | tr -dc 'a-zA-Z0-9!@#$%' | head -c 16 kM7p!Q9r@T5w#X2y

3. pwgenを使う(要インストール)

# pwgenのインストール # dnf install pwgen # 16文字のパスワードを1つ生成 $ pwgen -s 16 1 kM7pQ9rT5wX2yaB3

本記事のまとめ

やりたいこと コマンド
ランダムなパスワードを生成する mkpasswd
文字数を指定して生成する mkpasswd -l 16
数字を最低N文字含めて生成する mkpasswd -l 16 -d 3
opensslで生成する openssl rand -base64 16
/dev/urandomで生成する cat /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c 16

パスワード生成だけでなく、Linuxサーバーのセキュリティを体系的に身につけたいですか?

強力なパスワードの自動生成はLinuxサーバーセキュリティの基本です。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。