RDP を使用して Azure VM に接続するときの認証エラーのトラブルシューティング

この記事は、リモート デスクトップ プロトコル (RDP) 接続を使用して Azure 仮想マシン (VM) に接続するときに発生する認証エラーのトラブルシューティングに役立ちます。

注:

この記事はお役に立ちましたか? お客様の入力は、当社にとって重要です。 このページの [フィードバック ] ボタンを使用して、この記事がどれだけうまく機能したか、または改善する方法をお知らせください。

現象

[ようこそ] 画面を示し、オペレーティング システムが実行されていることを示す Azure VM のスクリーンショットをキャプチャします。 ただし、リモート デスクトップ接続を使用して VM に接続しようとすると、次のいずれかのエラー メッセージが表示されます。

  • 認証エラーが発生しました。 ローカル セキュリティ機関にアクセスできません。
  • 接続しようとしているリモート コンピューターではネットワーク レベル認証 (NLA) が必要ですが、Windows ドメイン コントローラーに接続して NLA を実行することはできません。 リモート コンピューターの管理者は、[システムのプロパティ] ダイアログ ボックスの [リモート] タブのオプションを使用して NLA を無効にすることができます。
  • このコンピューターはリモート コンピューターに接続できません。 問題が解決しない場合は、リモート コンピューターの所有者またはネットワーク管理者に問い合わせてください。

原因

NLA が VM への RDP アクセスをブロックする理由は複数あります。

  • VM はドメイン コントローラー (DC) と通信できません。 この問題により、ドメイン資格情報を使用して RDP セッションが VM にアクセスできなくなる可能性があります。 ただし、ローカル管理者の資格情報を使用してログオンすることはできます。 この問題は、次の状況で発生する可能性があります。
    • この VM と DC の間の Active Directory セキュリティ チャネルが壊れています。
    • VM にはアカウント パスワードの古いコピーがあり、DC には新しいコピーがあります。
    • この VM が接続している DC は異常です。
  • VM の暗号化レベルは、クライアント コンピューターで使用される暗号化レベルよりも高くなります。
  • TLS 1.0、1.1、または 1.2 (サーバー) プロトコルは、VM で無効になっています。 ドメイン資格情報を使用してログオンを無効にするように VM が設定されており、ローカル セキュリティ機関 (LSA) が正しく設定されていません。
  • VM は、連邦情報処理標準 (FIPS) 準拠のアルゴリズム接続のみを受け入れるように設定されました。 これは通常、Active Directory ポリシーを使用して行われます。 これはまれな構成ですが、FIPS はリモート デスクトップ接続にのみ適用できます。

トラブルシューティングを行う前に

バックアップ スナップショットの作成

バックアップ スナップショットを作成するには、「ディスクのスナップショットの作成」の手順に従います。

VM にリモート接続する

VM にリモート接続するには、「How to use remote tools to troubleshoot Azure VM issues」(リモート ツールを使用して Azure VM の問題をトラブルシューティングする) で説明されているいずれかの方法を使用します。

グループ ポリシー クライアント サービス

これがドメインに参加している VM の場合は、最初に グループ ポリシー クライアント サービスを停止して、Active Directory ポリシーによって変更が上書きされないようにします。 このためには、次のコマンドを実行します。

REM Disable the member server to retrieve the latest GPO from the domain upon start
REG add "HKLM\SYSTEM\CurrentControlSet\Services\gpsvc" /v Start /t REG_DWORD /d 4 /f

問題が解決されたら、この VM の機能を復元してドメインに接続し、ドメインから最新の GPO を取得します。 これを行うには、次のコマンドを実行します。

sc config gpsvc start= auto
sc start gpsvc

gpupdate /force

変更が元に戻された場合は、Active Directory ポリシーによって問題が発生していることを意味します。

回避策

VM に接続して原因を解決するための回避策として、NLA を一時的に無効にすることができます。 NLA を無効にするには、次のコマンドを使用するか、[コマンドの実行] でスクリプトを DisableNLA 使用 してください

REM Disable the Network Level Authentication
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 0

次に、VM を再起動し、トラブルシューティング セクションに進みます。

問題を解決したら、次のコマンドを実行して、VM を再起動して、NLA を再度有効にします。

REG add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v disabledomaincreds /t REG_DWORD /d 0 /f
REG add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 1 /f

トラブルシューティング

  1. ドメイン参加済み VM のトラブルシューティング。
  2. スタンドアロン VM のトラブルシューティング。

ドメイン参加済み VM のトラブルシューティング

この問題をトラブルシューティングするには:

  1. VM が DC に接続できるかどうかを確認します。
  2. DC の正常性を確認します。

注:

DC 正常性をテストするには、同じ VNET、サブネット内にあり、同じログオン サーバーを使用する別の VM を使用できます。

「VM にリモートで接続する」セクションの手順に従って 、シリアル コンソール、リモート CMD、またはリモート PowerShell を使用して、問題 のある VM に接続 します。

  1. VM が接続しようとしている DC を確認します。コンソールで次のコマンドを実行します。

    set | find /i "LOGONSERVER"
    
  2. VM と DC の間のセキュリティで保護されたチャネルの正常性をテストします。 これを行うには、管理者特権の Test-ComputerSecureChannel PowerShell インスタンスでコマンドを実行します。 このコマンドは、セキュリティで保護されたチャネルが有効かどうかを示す True または False を返します。

    Test-ComputerSecureChannel -verbose
    

    チャネルが壊れている場合は、次のコマンドを実行して修復します。

    Test-ComputerSecureChannel -repair
    
  3. Active Directory のコンピューター アカウント パスワードが VM と DC で更新されていることを確認します。

    Reset-ComputerMachinePassword -Server "<COMPUTERNAME>" -Credential <DOMAIN CREDENTIAL WITH DOMAIN ADMIN LEVEL>
    

DC と VM の間の通信が良好であっても、DC が RDP セッションを開くほど正常でない場合は、DC の再起動を試みることができます。

上記のコマンドでドメインへの通信の問題が解決しなかった場合は、この VM をドメインに再参加できます。 これを行うには、次の手順を実行します。

  1. 次のコンテンツを使用して Unjoin.ps1 という名前のスクリプトを作成し、Azure portalにカスタム スクリプト拡張機能としてスクリプトをデプロイします。

    cmd /c "netdom remove <<MachineName>> /domain:<<DomainName>> /userD:<<DomainAdminhere>> /passwordD:<<PasswordHere>> /reboot:10 /Force"
    

    このスクリプトは、ドメインから VM を強制的に削除し、10 秒後に VM を再起動します。 次に、ドメイン側の Computer オブジェクトをクリーンする必要があります。

  2. クリーンアップが完了したら、この VM をドメインに再参加します。 これを行うには、次のコンテンツを使用して JoinDomain.ps1 という名前のスクリプトを作成し、Azure portalにカスタム スクリプト拡張機能としてスクリプトをデプロイします。

    cmd /c "netdom join <<MachineName>> /domain:<<DomainName>> /userD:<<DomainAdminhere>> /passwordD:<<PasswordHere>> /reboot:10"
    

注:

これにより、指定した資格情報を使用して、ドメイン上の VM に参加します。

Active Directory チャネルが正常な場合、コンピューターのパスワードが更新され、ドメイン コントローラーが期待どおりに動作している場合は、次の手順を試してください。

問題が解決しない場合は、ドメイン資格情報が無効になっているかどうかをチェックします。 これを行うには、管理者特権のコマンド プロンプト ウィンドウを開き、次のコマンドを実行して、VM にログオンするためのドメイン アカウントを無効にするように VM が設定されているかどうかを判断します。

REG query "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v disabledomaincreds

キーが 1 に設定されている場合は、ドメイン資格情報を許可しないようにサーバーが設定されたことを意味します。 このキーを 0 に変更します。

スタンドアロン VM のトラブルシューティング

MinEncryptionLevel を確認する

CMD インスタンスで、次のコマンドを実行して MinEncryptionLevel レジストリ値を照会します。

reg query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v MinEncryptionLevel

レジストリ値に基づいて、次の手順に従います。

  • 4 (FIPS): FIP 準拠アルゴリズムの接続を確認します。

  • 3 (128 ビット暗号化): 次のコマンドを実行して重大度を 2 に設定します。

    reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v MinEncryptionLevel /t REG_DWORD /d 2 /f
    
  • 2 (クライアントによって指定された、可能な限り最高の暗号化): 次のコマンドを実行して、暗号化を最小値 の 1 に設定できます。

    reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v MinEncryptionLevel /t REG_DWORD /d 1 /f
    

レジストリへの変更が有効になるように VM を再起動します。

TLS バージョン

システムに応じて、RDP は TLS 1.0、1.1、または 1.2 (サーバー) プロトコルを使用します。 VM でこれらのプロトコルがどのように設定されているかを照会するには、CMD インスタンスを開き、次のコマンドを実行します。

reg query "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" /v Enabled
reg query "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" /v Enabled
reg query "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" /v Enabled

返される値がすべて 1 ではない場合は、プロトコルが無効になっていることを意味します。 これらのプロトコルを有効にするには、次のコマンドを実行します。

reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" /v Enabled /t REG_DWORD /d 1 /f
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" /v Enabled /t REG_DWORD /d 1 /f
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" /v Enabled /t REG_DWORD /d 1 /f

他のプロトコル バージョンの場合は、次のコマンドを実行できます。

reg query "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS x.x\Server" /v Enabled
reg query "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS x.x\Server" /v Enabled

注:

SCHANNEL エラーのゲスト OS ログから SSH/TLS バージョン x.x を取得します。

FIP 準拠のアルゴリズム接続を確認する

リモート デスクトップは、FIP 準拠のアルゴリズム接続のみを使用するように強制できます。 これは、レジストリ キーを使用して設定できます。 これを行うには、管理者特権のコマンド プロンプト ウィンドウを開き、次のキーを照会します。

reg query "HKLM\SYSTEM\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy" /v Enabled

コマンドが 1 を返す場合は、レジストリ値を 0 に変更します。

reg query "HKLM\SYSTEM\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy" /v Enabled /t REG_DWORD /d 0

VM 上の現在の MinEncryptionLevel を確認します。

reg query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v MinEncryptionLevel

コマンドが 4 を返す場合は、レジストリ値を 2 に変更します

reg query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v MinEncryptionLevel /t REG_DWORD /d 2

レジストリへの変更が有効になるように VM を再起動します。

次の手順

お問い合わせはこちらから

質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。