VS Codeで使うWSLのsudoパスワードを忘れたときの再設定方法|PowerShellから戻す

contents 6
  1. 01 VS CodeでWSLを使っていると、ときどき起きること
  2. 02 いちばん手早い再設定手順
  3. 03 うまくいかないときの確認点
  4. 04 VS Code利用時に覚えておくと楽なこと
  5. 05 まとめ
  6. 06 参考文献

VS CodeでWSLを使っていると、ときどき起きること

普段はメイン端末でVS CodeとWSLを使っていても、たまにしか触らない端末を開くと、Linux側のパスワードをきれいに忘れていることがあります。sudo が通らないと更新も設定変更も止まるので、地味に困ります。

この場合、PowerShellからWSLをrootユーザーで起動し、対象ユーザーのパスワードを上書きすれば戻せます。少し紛らわしいのですが、忘れているのは「Windowsの管理者パスワード」ではなく、WSL内のLinuxユーザーに対するパスワードです。検索では「WSLのrootパスワードを忘れた」と書かれがちですが、実際の復旧作業としては、自分の通常ユーザーのsudo用パスワードを再設定する場面がほとんどです。

いちばん手早い再設定手順

以下では、WSL内の通常ユーザー名を user、再設定するパスワードを password と表記します。

いちばん短いのは、PowerShellからそのまま passwd を実行する方法です。

既定のWSLディストリビューションが対象なら、これで足ります。

wsl -u root passwd user

複数ディストリビューションを使っていて、対象を明示したいならこうします。

wsl -d Ubuntu -u root passwd user

新しいパスワードとして password を2回入力すれば完了です。

ディストリビューション名が分からないときだけ、先に一覧を見ます。

wsl -l -v

対話的に確認しながら進めたいなら、従来どおり root で入って passwd を打っても構いません。

wsl -d Ubuntu -u root

入れたら、パスワードを忘れたユーザーを指定して再設定します。

passwd user

新しいパスワードとして password を2回入力すれば完了です。いったんWSLを抜けて、通常ユーザーで入り直し、sudo が通るか確認します。

exit
wsl -d Ubuntu
sudo whoami

root と表示されれば戻っています。

うまくいかないときの確認点

ユーザー名が分からない

root で入ったあと、以下で確認できます。

ls /home

通常は表示されたディレクトリ名がユーザー名です。

既定ユーザーが崩れている

パスワードは直ったのに、起動時のユーザーが意図せず root になることがあります。その場合は /etc/wsl.confuser.default を確認します。

cat /etc/wsl.conf

必要なら次の形にしておくと分かりやすいです。

[user]
default=user

反映はWindows側で一度WSLを終了してから行います。wsl.conf の変更は、ディストリビューション停止後に次回起動で反映されます。

wsl --shutdown

Microsoft Learn では、Store版のディストリビューションでは <DistributionName> config --default-user <Username> も案内されています。ただし、importしたディストリビューションではこの方法が使えないため、/etc/wsl.conf を見ておく方が汎用的です。

VS Code利用時に覚えておくと楽なこと

VS CodeのRemote - WSL拡張を使っていても、パスワード再設定そのものはPowerShell側から処理した方が早いです。WSLが起動できる限り、エディタ側で粘るより wsl -d <Distro> -u root の1行で片付くことが多いです。

久しぶりに使う端末ほど、こういう復旧手順だけは短くメモしておくのが正解です。なるほど、覚えるより残す方が安定します。

まとめ

WSLでsudoパスワードを忘れたときは、PowerShellから対象ディストリビューションをrootで起動し、passwd <ユーザー名>で再設定すればほぼ解決します。VS Codeの問題に見えても、実際にはWSL内ユーザーの認証情報の話なので、Windows側から入口を変えると案外あっさり戻せます。

参考文献

share Twitter Facebook