Azure 上の Windows VM へのリモート デスクトップ接続に関する問題の詳細なトラブルシューティング手順

この記事では、Windows ベースの Azure 仮想マシンの複雑なリモート デスクトップのエラーを診断して修正するための詳細なトラブルシューティング手順を説明します。

重要

リモート デスクトップのより一般的なエラーを解消するには、先に進む前に、必ずリモート デスクトップの基本的なトラブルシューティングの記事をお読みください。

リモート デスクトップの基本的なトラブルシューティング ガイドで扱われている具体的なエラー メッセージのいずれにも似ていないエラー メッセージがリモート デスクトップで表示されることもあります。 次の手順に従って、リモート デスクトップ (RDP) クライアントが Azure VM 上の RDP サービスに接続できない原因を特定してください。

リモート デスクトップ接続のコンポーネント

RDP 接続には以下のコンポーネントが関連しています。

図は、リモート デスクトップ (RDP) 接続に関連するコンポーネントを示しています。

先に進む前に、前回 VM に正常にリモート デスクトップ接続できたとき以降、何を変更したかを思い返してみると、役に立つかもしれません。 次に例を示します。

  • VM、または VM が含まれるクラウド サービスのパブリック IP アドレス (仮想 IP アドレス (VIP) とも呼ばれる) が変更されました。 この RDP 障害は、DNS 名について登録された 古い IP アドレス が DNS クライアント キャッシュにまだ入っているために発生した可能性があります。 DNS クライアント キャッシュをフラッシュしてから、もう一度 VM に接続してみてください。 または、新しい VIP に直接接続してみてください。
  • Azure ポータルによって生成された接続を使用する代わりに、サード パーティのアプリケーションを使用してリモート デスクトップ接続を管理しています。 アプリケーションの構成にリモート デスクトップのトラフィック用の正しい TCP ポートが含まれていることを確認します。 VM の [設定エンドポイント] > をクリックすると、Azure portalのクラシック仮想マシンに対してこのポートをチェックできます。

準備作業

詳細なトラブルシューティングに進む前に、以下の操作を実行します。

これらの手順を実行してから、リモート デスクトップを介して VM に再接続してみてください。

詳細なトラブルシューティングの手順

リモート デスクトップ クライアントから Azure VM のリモート デスクトップ サービスに接続できないのは、以下のソースに問題があることが原因である可能性があります。

ソース 1: リモート デスクトップ クライアント コンピューター

コンピューターが他のオンプレミスの Windows ベースのコンピューターにリモート デスクトップ接続を実行できることを確認します。

RDP クライアントが強調表示された RDP 接続のコンポーネントと、接続を示す別のオンプレミス コンピューターを指す矢印の図。

接続できない場合は、そのコンピューターで以下のものがないかどうかを確認してください。

  • リモート デスクトップのトラフィックをブロックしているローカル ファイアウォールの設定。
  • リモート デスクトップ接続を妨げている、ローカルでインストールされたクライアント プロキシのソフトウェア。
  • リモート デスクトップ接続を妨げている、ローカルでインストールされたネットワーク監視ソフトウェア。
  • リモート デスクトップ接続を妨げている、トラフィックを監視する、あるいは特定種類のトラフィックを許可または禁止する別の種類のセキュリティ ソフトウェア。

いずれの場合も、該当ソフトウェアを一時的に無効にし、リモート デスクトップ経由でオンプレミス コンピューターへの接続を試してください。 この方法で実際の原因が判明した場合は、ネットワーク管理者と共に、リモート デスクトップ接続が可能になるようにそのソフトウェアの設定を修正してください。

ソース 2: 組織のイントラネットのエッジ デバイス

インターネットに直接接続されているコンピューターで、Azure 仮想マシンへのリモート デスクトップ接続を実行できることを確認します。

インターネットに接続されている RDP クライアントが強調表示された RDP 接続のコンポーネントと、接続を示す Azure VM を指す矢印の図。

インターネットに直接接続されているコンピューターがない場合は、リソース グループまたはクラウド サービス内に新しい Azure 仮想マシンを作成してテストします。 詳細については、「Azure 上で Windows を実行する仮想マシンの作成」を参照してください。 仮想マシンとリソース グループまたはクラウド サービスは、テスト後に削除できます。

インターネットに直接接続されているコンピューターとのリモート デスクトップ接続を作成できるのなら、組織のイントラネットのエッジ デバイスで以下を確認してください。

  • インターネットへの HTTPS 接続をブロックしている内部ファイアウォール。
  • リモート デスクトップ接続を妨げているプロキシ サーバー。
  • リモート デスクトップ接続を妨げている、エッジ ネットワーク内のデバイスで実行されている侵入検出またはネットワーク監視のソフトウェア。

ネットワーク管理者とともに、インターネットへの HTTPS ベースのリモート デスクトップ接続が可能になるように、組織のイントラネットのエッジ デバイスの設定を修正してください。

ソース 3: クラウド サービス エンドポイントと ACL

重要

クラシック VM は 2023 年 9 月 1 日に廃止されます

ASM の IaaS リソースを使用する場合は、2023 年 9 月 1 日までに移行を完了してください。 Azure Resource Manager の多くの機能拡張を利用するには、切り替えを早めに行うことをお勧めします。

詳細については、「2023 年 9 月 1 日までに IaaS リソースを Azure Resource Manager に移行する」を参照してください。

クラシック デプロイ モデルを使用して作成された VM の場合は、同じクラウド サービスまたは仮想ネットワーク内にある別の Azure VM が自分の Azure VM にリモート デスクトップ接続できることを確認してください。

1 つの Azure VM が強調表示された RDP 接続のコンポーネントと、接続を示す同じクラウド サービス内の別の Azure VM を指す矢印の図。

注:

Resource Manager で作成された仮想マシンの場合は、「ソース 4: ネットワーク セキュリティ グループ」に進んでください。

同じクラウド サービスまたは仮想ネットワーク内に別の仮想マシンがない場合、作成します。 「Azure 上で Windows を実行する仮想マシンの作成」の手順に従ってください。 テストが完了した後は、テスト用の仮想マシンを削除します。

同じクラウド サービスまたは仮想ネットワーク内の仮想マシンにリモート デスクトップ経由で接続できる場合は、以下の設定を確認してください。

  • ターゲット VM でのリモート デスクトップ トラフィック用のエンドポイント構成: エンドポイントのプライベート TCP ポートは、VM のリモート デスクトップ サービスがリッスンしている TCP ポートと一致する必要があります (既定では 3389)。
  • ターゲット VM でのリモート デスクトップ トラフィック エンドポイント用の ACL: ACL を使用すると、ソース IP アドレスに基づいて、インターネットからの受信トラフィックを許可または拒否するかを指定できます。 ACL が正しく構成されていないと、そのエンドポイントへのリモート デスクトップの受信トラフィックを受け取れない場合があります。 プロキシまたは他のエッジ サーバーのパブリック IP アドレスからの受信トラフィックが ACL で許可されていることを確認してください。 詳細については、「 ネットワーク アクセス制御リスト (ACL) の概要

問題の原因がエンドポイントかどうかを確認するには、現在使用されているエンドポイントを削除してから新しいエンドポイントを作成します。このとき、外部ポート番号の範囲 49152 ~ 65535 からランダムなポート番号を選択します。 詳細については、仮想マシンに対してエンドポイントを設定する方法に関するページを参照してください。

ソース 4: ネットワーク セキュリティ グループ

ネットワーク セキュリティ グループでは、許可された受信トラフィックと送信トラフィックをより細かく制御できます。 Azure 仮想ネットワーク内のサブネットまたはクラウド サービスの全体に適用されるルールを作成することができます。

IP フロー検証を使用して、ネットワーク セキュリティ グループ規則によって、仮想マシンから送受信されるトラフィックがブロックされていないかどうかを確認します。 有効なセキュリティ グループ規則を確認して、RDP ポート (既定では 3389) に対して受信 "許可" NSG 規則が存在し、優先されていることを確認することもできます。 詳細については、「有効なセキュリティ規則を使用した VM トラフィック フローのトラブルシューティング」を参照してください。

ソース 5: Windows ベースの Azure VM

クラウド サービス内で Azure VM が強調表示された RDP 接続のコンポーネントと、問題の原因となる可能性があるというメッセージの図。

この記事の手順に従ってください。 この記事では、仮想マシン上のリモート デスクトップ サービスを次のようにリセットします。

  • 「リモート デスクトップ」 の Windows ファイアウォールの既定ルール (TCP ポート 3389) が有効になる。
  • HKLM\System\CurrentControlSet\Control\Terminal Server\fDenyTSConnections レジストリ値が 0 に設定されるため、リモート デスクトップ接続が有効になる。

もう一度、コンピューターから接続を試みてください。 まだリモート デスクトップ経由で接続できない場合は、以下の問題の可能性を調べてください。

  • ターゲット VM 上でリモート デスクトップ サービスが実行されていない。
  • リモート デスクトップ サービスが TCP ポート 3389 をリッスンしていない。
  • Windows ファイアウォールまたは他のローカルのファイアウォールで、リモート デスクトップのトラフィックを妨げている送信ルールが設定されている。
  • Azure 仮想マシンで実行されている侵入検出ソフトウェアまたは監視ソフトウェアが、リモート デスクトップ接続を妨げている。

クラシック デプロイ モデルを使用して作成された VM の場合は、Azure 仮想マシンへのリモート Azure PowerShell セッションを使用できます。 最初に、仮想マシンをホストするクラウド サービスの証明書をインストールする必要があります。 Azure Virtual Machines への安全なリモート PowerShell アクセスの構成 に関するページを参照し、 InstallWinRMCertAzureVM.ps1 スクリプト ファイルを、ローカル コンピューター上にダウンロードします。

次に、まだ Azure PowerShell がインストールされていなければ、インストールします。 「 Azure PowerShell のインストールと構成の方法」を参照してください。

次に、Azure PowerShell のコマンド プロンプトを開き、現在のフォルダーを、 InstallWinRMCertAzureVM.ps1 スクリプト ファイルのある場所に変更します。 Azure PowerShell スクリプトを実行するには、適切な実行ポリシーを設定する必要があります。 Get-executionpolicy コマンドを実行して、現在のポリシー レベルを決定します。 適切なレベルの設定方法の詳細については、「 Set-executionpolicy」 を参照してください。

次に、Azure サブスクリプション名、クラウド サービス名、仮想マシン名 (および > 文字を削除<) を入力し、これらのコマンドを実行します。

$subscr="<Name of your Azure subscription>"
$serviceName="<Name of the cloud service that contains the target virtual machine>"
$vmName="<Name of the target virtual machine>"
.\InstallWinRMCertAzureVM.ps1 -SubscriptionName $subscr -ServiceName $serviceName -Name $vmName

正しいサブスクリプション名は、Get-AzureSubscription コマンドで表示される SubscriptionName プロパティから取得できます。 仮想マシンのクラウド サービス名は、Get-AzureVM コマンドに表示される ServiceName 列から取得できます。

新しい証明書があることを確認します。 現在のユーザー用の証明書スナップインを開き、Trusted Root Certification Authorities\Certificates フォルダーを調べます。 クラウド サービスの DNS 名が付けられた証明書が、[発行先] 列に表示されます (例: cloudservice4testing.cloudapp.net)、、

次に以下のコマンドを使用して、リモート Azure PowerShell セッションを開始します。

$uri = Get-AzureWinRMUri -ServiceName $serviceName -Name $vmName
$creds = Get-Credential
Enter-PSSession -ConnectionUri $uri -Credential $creds

有効な管理者の資格情報を入力すると、Azure PowerShell プロンプトで次のように表示されます。

[cloudservice4testing.cloudapp.net]: PS C:\Users\User1\Documents>

このメッセージの最初の部分は、ターゲット VM を含むクラウド サービス名です。これは、"cloudservice4testing.cloudapp.net" とは異なる場合もあります。 これでこのクラウド サービスに対する Azure PowerShell コマンドを発行して、前述したその他の問題を調査して構成を修正することができます。

リモート デスクトップ サービスでリッスンする TCP ポートの手動修正

リモートの Azure PowerShell セッション プロンプトで、このコマンドを実行します。

Get-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name "PortNumber"

PortNumber プロパティは、現在のポート番号を表示します。 必要に応じて、次のコマンドを使用してリモート デスクトップのポート番号を既定値 (3389) に戻してください。

Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name "PortNumber" -Value 3389

次のコマンドを使用して、ポートが 3389 に変更されたことを確認します。

Get-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name "PortNumber"

次のコマンドを使用して、リモートの Azure PowerShell セッションを終了します。

Exit-PSSession

Azure VM のリモート デスクトップのエンドポイントでも、内部ポートとして TCP ポート 3398 が使用されていることを確認します。 Azure VM を再起動し、もう一度リモート デスクトップ接続を試してみてください。

その他のリソース

Windows 仮想マシンのパスワードまたはリモート デスクトップ サービスをリセットする方法

Azure PowerShell のインストールと構成の方法

Linux ベースの Azure 仮想マシンに対する Secure Shell (SSH) 接続のトラブルシューティング

Azure の仮想マシンで実行されているアプリケーションへのアクセスに関するトラブルシューティング

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

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