Ubuntuでパスワードを変更したい、あるいはパスワードを忘れてしまってログインできなくなった——そんなときに使うコマンドが passwd です。
結論から言うと、ログイン済みの状態なら passwd コマンド1つでパスワードを変更できます。パスワードを忘れた場合はリカバリモード(シングルユーザーモード)からリセットできます。
本記事では実際に Ubuntu 24.04 LTS のDockerコンテナでコマンドを実行した結果を掲載しています。出力を捏造せず、手元で再現できる内容だけを書きます。
この記事のポイント
- 自分のパスワードは
passwd、他ユーザーのパスワードはsudo passwd ユーザー名で変更できる - スクリプトから非対話的に変更するには
echo 'user:pass' | sudo chpasswdが便利 - パスワードを忘れた場合はリカバリモード(GRUB メニュー)からリセットできる
- Ubuntu 24.04 では
/etc/shadowのハッシュアルゴリズムが yescrypt($y$)に変わった(22.04は SHA-512) - アカウントの一時停止には
passwd -l(ロック)/passwd -u(アンロック)を使う
目次
- 動作確認済み環境
- 自分自身のパスワードを変更する
- 他ユーザーのパスワードを変更する(rootまたはsudo)
- スクリプトから非対話的に変更する(chpasswd)
- パスワードのステータスを確認する(passwd -S)
- アカウントをロック・アンロックする
- /etc/shadow の仕組みを理解する
- パスワードを忘れたときのリセット方法(リカバリモード)
- よくあるエラーと対処法
- まとめ
動作確認済み環境
本記事のコマンドは以下の環境で実行・検証しています。
| 項目 | 値 |
|---|---|
| OS | Ubuntu 24.04.4 LTS(Noble Numbat) |
| 実行環境 | Docker公式イメージ ubuntu:24.04 |
| passwd パッケージ | 1:4.13+dfsg1-4ubuntu3.2 |
| 検証日 | 2026-06-13 |
VPSやWSLでも同じコマンドが使えますが、リカバリモードの手順はベアメタル(実機)やVPSのコンソール画面が必要です。
自分自身のパスワードを変更する
ログイン中のユーザーのパスワードを変更するには、引数なしで passwd を実行します。
Changing password for ubuntu.
Current password: (現在のパスワードを入力)
New password: (新しいパスワードを入力)
Retype new password: (再度入力)
passwd: password updated successfully
入力中のパスワードは画面に表示されません(セキュリティのため)。「Current password:」で現在のパスワードを入力し、「New password:」で新しいものを2回入力します。
パスワードの強度について
Ubuntu の passwd は PAM(Pluggable Authentication Modules)を通じてパスワードの強度をチェックします。短すぎるパスワードや辞書に載っているパスワードは「BAD PASSWORD」と拒否されることがあります。最低8文字以上、英数字・記号を混ぜることを推奨します。

他ユーザーのパスワードを変更する(rootまたはsudo)
サーバー管理者が他のユーザーのパスワードを変更したい場合は、sudo passwd ユーザー名 を使います。この場合は現在のパスワードの入力が不要になります。
New password: (新しいパスワードを入力)
Retype new password: (再度入力)
passwd: password updated successfully
sudo を付けると現在のパスワード確認がスキップされるため、管理者権限を持つユーザーなら他人のパスワードを直接変更できます。
①ユーザー名を確認する
変更したいユーザー名がわからないときは cat /etc/passwd または getent passwd で一覧を確認できます。
ubuntu
testuser
UID 1000以上の行が一般ユーザーです(システムユーザーは除外しています)。
スクリプトから非対話的に変更する(chpasswd)
Bashスクリプトやプロビジョニングツールからパスワードを設定するときは、chpasswd コマンドが便利です。echo でパイプするだけで設定できます。
# 成功時は何も表示されない(exit code: 0)
# 複数ユーザーを一括設定する場合
$ printf ‘user1:Password1!\nuser2:Password2!’ | sudo chpasswd
# user1・user2 のパスワードがまとめて変更された
実際にDockerコンテナで実行したところ、chpasswd は正常に終了(exit code: 0)し、/etc/shadow にハッシュ化されたパスワードが書き込まれることを確認しました。

セキュリティ上の注意
シェル履歴(.bash_history)にパスワードが残ります。スクリプトでの使用は信頼できる環境に限定し、スクリプトのパーミッションを chmod 600 で制限してください。より安全な方法として、パスワードを環境変数で渡す方法もあります。
パスワードのステータスを確認する(passwd -S)
passwd -S ユーザー名 で現在のパスワード状態を確認できます。Ubuntu 24.04 の Docker コンテナで実際に確認した結果は次のとおりです。
testuser P 2026-06-13 0 99999 7 -1
# [ユーザー名] [状態] [最終変更日] [最小日数] [最大日数] [警告日数] [無効日数]
「状態」フィールドの意味:
- P(Password): パスワードが設定されている
- L(Locked): アカウントがロックされている
- NP(No Password): パスワードが未設定
アカウントをロック・アンロックする
退職したユーザーや一時的に使用を止めたいアカウントは、パスワードを削除せずにロックすることで安全に無効化できます。

$ sudo passwd -l testuser
passwd: password changed.
$ sudo passwd -S testuser
testuser L 2026-06-13 0 99999 7 -1 # L = ロック中
# アンロック(アカウントを再有効化)
$ sudo passwd -u testuser
passwd: password changed.
$ sudo passwd -S testuser
testuser P 2026-06-13 0 99999 7 -1 # P = 通常状態
Ubuntu 24.04 の Docker コンテナで上記を実際に実行し、ロック・アンロックが正しく動作することを確認しました(passwd バージョン: 1:4.13+dfsg1-4ubuntu3.2)。
①パスワードを期限切れにする(passwd -e)
次回ログイン時に強制的にパスワード変更を促したいときは passwd -e を使います。
passwd: password expiry information changed.
# 次回ログイン時に新パスワードの設定を求められる
/etc/shadow の仕組みを理解する
Ubuntuのパスワード情報は /etc/shadow に暗号化(ハッシュ化)された形で保存されています。実際のDockerコンテナで確認した形式を見てみましょう。

testuser:$y$j9T$VbBDHoAtSeWsUGqJjuBa5/$z3BMpHqSWMFvxiAlzNhaaBlrRewd7vDOaVQoCYpWTV2:20617:0:99999:7:::
# $y$ = yescrypt(Ubuntu 24.04 のデフォルト)
# $6$ = SHA-512(Ubuntu 22.04 のデフォルト)
# 20617 = 最終変更日(1970-01-01 からの日数)
ここで重要なのは、実際のパスワードは保存されていないという点です。ハッシュ値のみが格納されており、認証時には入力されたパスワードをハッシュ化して照合します。
①Ubuntu 22.04 と 24.04 のハッシュアルゴリズムの違い
実際に Ubuntu 22.04 と 24.04 の両Dockerイメージで確認した結果です。

| 項目 | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS |
|---|---|---|
| passwd パッケージ | 1:4.8.1-2ubuntu2.2 | 1:4.13+dfsg1-4ubuntu3.2 |
| /etc/shadow のハッシュ | $6$...(SHA-512) |
$y$...(yescrypt) |
| PASS_MAX_DAYS | 99999 | 99999 |
| PASS_MIN_DAYS | 0 | 0 |
| PASS_WARN_AGE | 7日前 | 7日前 |
Ubuntu 24.04 では chpasswd のデフォルトハッシュアルゴリズムが yescrypt($y$)になりました。yescrypt は SHA-512 より強力なメモリハード関数で、ブルートフォース攻撃に対する耐性が高いのが特徴です。/etc/login.defs の ENCRYPT_METHOD SHA512 はpasswdコマンドの場合も内部で yescrypt を使うケースがあります。
パスワードを忘れたときのリセット方法(リカバリモード)
パスワードを忘れてしまい、ログインできなくなった場合はリカバリモード(シングルユーザーモード)でリセットできます。VPSの場合はコントロールパネルのコンソール機能を使います。
注意
この手順を実行するには、物理マシンへのアクセスまたはVPSのコンソール(KVMコンソール)が必要です。Vultr・DigitalOcean・ConoHa VPSなどのコントロールパネルから利用できます。
①GRUBメニューを開く
マシンの再起動直後(ロゴが表示されるタイミング)に Shift キーを押し続けるか Esc を連打して GRUBメニューを表示します。VPSの場合はコンソール画面で再起動後に操作します。
②リカバリモードを選択する
GRUBメニューで「Advanced options for Ubuntu」を選び、続いて「Ubuntu … (recovery mode)」を選択します。
③rootシェルを起動する
リカバリメニューで「root — Drop to root shell prompt」を選択します。
# mount -o remount,rw /
# パスワードをリセット(”ubuntu” の部分を対象ユーザー名に変更)
# passwd ubuntu
New password:
Retype new password:
passwd: password updated successfully
# 再起動
# reboot
コマンドの先頭が #(シャープ)になっているのは、rootユーザーとして実行しているためです。この手順では現在のパスワードを聞かれません。
セキュリティに関する重要な注意
リカバリモードはパスワードなしでrootシェルにアクセスできるため、物理アクセスやコンソールアクセスを持つ人間が悪用すると危険です。本番サーバーでは GRUB にパスワードを設定するか、VPSコントロールパネルへのアクセスを厳重に管理してください。
よくあるエラーと対処法
①「Authentication token manipulation error」
passwd: Authentication token manipulation error
passwd: password unchanged
原因と対処: /etc/shadow または /etc/passwd のパーミッションが壊れているか、ファイルシステムが読み取り専用になっています。ls -la /etc/shadow でパーミッションを確認し、640 または 000 になっていれば正常です。ファイルシステムが読み取り専用の場合は sudo mount -o remount,rw / で再マウントしてください。
②「BAD PASSWORD: The password is a palindrome」
New password:
BAD PASSWORD: The password is a palindrome
BAD PASSWORD: The password fails the dictionary check
原因と対処: PAMの pam_pwquality モジュールがパスワードの強度不足を検出しています。英大文字・小文字・数字・記号を含む8文字以上のパスワードを使ってください。sudo(root)で変更する場合はこのチェックは警告のみで変更は通りますが、セキュリティ上は推奨しません。
③「Unknown user name ‘username’」
passwd: Unknown user name ‘typo_user’
原因と対処: ユーザー名が存在しません。getent passwd で正確なユーザー名を確認してください。
まとめ
Ubuntuのパスワード変更・リセットの方法をまとめます。
コマンドのまとめ
- 自分のパスワード変更:
passwd - 他ユーザーのパスワード変更:
sudo passwd ユーザー名 - 非対話的な変更(スクリプト向け):
echo 'user:pass' | sudo chpasswd - パスワードステータス確認:
sudo passwd -S ユーザー名 - アカウントのロック:
sudo passwd -l ユーザー名 - アカウントのアンロック:
sudo passwd -u ユーザー名 - 次回ログイン時に変更を強制:
sudo passwd -e ユーザー名 - パスワードを忘れた場合: リカバリモードで
passwd ユーザー名
Ubuntu 24.04 では /etc/shadow のデフォルトハッシュアルゴリズムが yescrypt($y$)に変わりました。22.04 から移行する場合に既存の $6$(SHA-512)ハッシュがそのまま使われ続けることもありますが、パスワードを変更すると自動的に yescrypt で再ハッシュされます。
ユーザー管理全般(作成・削除・グループ設定)については Ubuntuのユーザー管理コマンド完全ガイド も合わせてご覧ください。
VPSを借りてサーバー運用を始めたい方には、SSH鍵認証をパスワード認証の代わりに使う方法が安全です。UbuntuでSSH鍵認証を設定する方法 で詳しく解説しています。
本格的にVPSを運用するなら、SSHのパスワード認証をオフにして鍵認証のみにするのが基本です。以下のVPS比較記事も参考にどうぞ。



コメント