ふぁメモ

主に技術系のメモをしたいけどやっぱり適当日記。たまにPHPコード載ってるけどメモ書き程度のスクリプトなのでそのまま使っちゃダメ。

備忘録:リモートデスクトップ認証トラップ

ChatGPTに訊いてみただけ

生活の中の素朴な疑問について思いつくままに質問すると、AIは的確な解答をくれます。 大抵の情報源はネットの情報のまとめなので正確ではないかもしれませんが、言い換えや専門用語を提示してくれるので自分で調べるための足掛かりになります。

  • 一度Microsoftアカウントのパスワードでローカルログインしておかないとリモートデスクトップ接続時にログインできない(パスワード認証されない)トラップを解説してください。

これは Windows 10 以降で Microsoft アカウント(MSA)を使っている場合にだけ起きる、かなり有名だけど分かりにくい罠 です。 理由は「認証情報の初期化タイミング」と「RDP の認証方式」の組み合わせにあります。

結論(要点)

一度もローカル(対話)ログオンしていない Microsoft アカウントは、 RDP(リモートデスクトップ)で使える “実パスワード” をまだ持っていないため、認証できない。

何が起きているのか(内部的な仕組み)

Microsoft アカウントの正体

WindowsMicrosoft アカウントは、

ハイブリッド です。

しかし 初回ログオン前 は:

  • ローカルの SAM / Credential Manager に 完全なパスワードハッシュがまだ作られていない
  • 代わりに「オンラインで通る前提のトークン状態」

になっています。

② RDP は「オンライン認証」ができない

リモートデスクトップ(RDP)のログオンは:

  • LSA(Local Security Authority)
  • ローカルに保存された資格情報

を使って認証します。

👉 Microsoft のオンライン認証サーバーには問い合わせません

つまり:

状態 結果
初回ログオン前 ローカルにパスワードが無い → ❌
一度対話ログオン済 ローカルにハッシュ生成 → ✅

③ なぜ「一度ログインすると直る」のか

初回の 対話ログオン(画面・キーボードあり)で:

  • Microsoft にオンライン認証
  • 成功すると ローカル用の資格情報(ハッシュ)が生成・保存
  • 以後は RDP でも使える

という流れになります。

④ PIN / Windows Hello を使っているとさらに罠

特に多いパターン:

  • 初期設定で PIN のみ設定
  • パスワード入力を一度もしていない

👉 この場合:

  • RDP では PIN は使えない
  • パスワード自体がローカルに存在しない

ので 必ず詰みます

⑤ 表示名とユーザー名も地味に罠

RDP でのユーザー名は:

MicrosoftAccount\メールアドレス

例:

MicrosoftAccount\user@example.com

これを知らずに:

ユーザー名: user

とか入れても当然失敗します。

まとめ(なぜこうなっているのか)

理由 内容
セキュリティ設計 RDP はローカル認証のみ
MSA の仕様 初回ログオンまでローカルパスワード未生成
PIN/Hello RDP 非対応
結果 「一度ログインしないと RDP できない」

回避策(実務向け)

✔ 最も確実

  • 初期セットアップ後、必ず一度ローカルでサインイン
  • パスワード入力でログオンする

✔ サーバ用途・常時RDP用途

✔ 管理用途

  • 管理者用の ローカル管理者アカウントを別途用意

一言でいうと

Microsoft アカウントは、最初は“まだローカルユーザーじゃない”」

という設計思想の副作用です。

かなり分かりにくいですが、 「仕様」であって「バグではない」というのがまた厄介なところですね…。


所感

RDP有効にした時にでも、Windowsの方から通知されるようにしてほしいね。