Visual Studio を使用して、Azure Cloud Services (クラシック) でロールのリモート デスクトップ接続を有効にする
重要
Cloud Services (クラシック) は、2024 年 9 月 1 日をもって、すべてのお客様に対して非推奨になりました。 既存の実行中のデプロイはすべて Microsoft によって停止およびシャットダウンされ、2024 年 10 月以降、データは永久に失われます。 新しいデプロイでは、新しい Azure Resource Manager ベースのデプロイ モデル、 Azure Cloud Services (延長サポート) を使用してください。
リモート デスクトップを使用すると、リモート デスクトップ プロトコル (RDP) を使用して、Azure 内で実行されているロールのデスクトップにアクセスできるようになります。 リモート デスクトップ接続を使用して、アプリケーションの実行中に問題のトラブルシューティングと診断を行うことができます。
Visual Studio によってクラウド サービス向けに提供される発行ウィザードでは、発行プロセス中にユーザーが入力した資格情報を利用してリモート デスクトップを有効にできるオプションが含まれています。 このオプションは、Visual Studio 2017 バージョン 15.4 以前を使用するときに適しています。
Visual Studio 2017 バージョン 15.5 以降では、単独の開発者として作業している場合を除き、発行ウィザードを使用してリモート デスクトップを有効にしないことをお勧めします。 複数の開発者がプロジェクトを開く状況では、代わりに Azure Portal、PowerShell、または継続的デプロイ ワークフロー内のリリース パイプラインからリモート デスクトップを有効にする必要があります。 この推奨事項は、この記事の中で説明しているように、Visual Studio とクラウド サービス仮想マシン (VM) 上のリモート デスクトップとの通信方法の変更によるものです。
Visual Studio 2017 バージョン 15.4 以前でリモート デスクトップを構成する
Visual Studio 2017 バージョン 15.4 以前を使用しているとき、発行ウィザードの [すべてのロールに対してリモート デスクトップを有効にする] オプションを使用できます。 このウィザードは Visual Studio 2017 バージョン 15.5 以降で引き続き使用できますが、リモート デスクトップ オプションは使用しないでください。
Visual Studio のソリューション エクスプローラーでクラウド サービス プロジェクトを右クリックし、[発行] を選択し、発行ウィザードを開始します。
必要に応じて Azure サブスクリプションにサインインし、[次へ] を選択します。
[設定] ページで [すべてのロールに対してリモート デスクトップを有効にする] を選択し、[設定] リンクを設定して [リモート デスクトップ構成] ダイアログ ボックスを開きます。
ダイアログ ボックスの一番下にある [その他のオプション] を選択します。 これで証明書を作成または選択できるドロップダウン リストが表示されます。リモート デスクトップを使用して接続するときに資格情報を暗号化できます。
Note
リモート デスクトップ接続に必要な証明書は、他の Azure 操作で使用する証明書とは異なります。 リモート アクセス証明書には、秘密キーが必要です。
一覧から証明書を選択するか、 <[作成]> を選択します。 新しい証明書を作成する場合、入力を求められたら新しい証明書にわかりやすい名前を付け、[OK] を選択します。 ドロップダウン リスト ボックスに新しい証明書が表示されます。
ユーザー名とパスワードを入力します。 既存のアカウントを使用することはできません。 新しいアカウントのユーザー名として "Administrator" を使用しないでください。
このアカウントの期限が切れる日付を選択します。 期限の切れたアカウントでは、それ以降のリモート デスクトップ接続が自動的にブロックされます。
必要な情報をすべて入力したら、[OK] を選択します。 Visual Studio により、リモート デスクトップ設定がプロジェクトの
.cscfg
ファイルと.csdef
ファイルに追加されます。選択した証明書を使用して暗号化されるパスワードが含まれています。[次へ] ボタンを使用して残りの手順を完了し、クラウド サービスを発行する準備ができたら、[発行] を選択します。 発行する準備ができていない場合、[キャンセル] を選択し、変更内容の保存を求められたら [はい] で回答します。 後で、保存した設定でクラウド サービスを発行できます。
Visual Studio 2017 バージョン 15.5 以降でリモート デスクトップを構成する
Visual Studio 2017 バージョン 15.5 以降でも引き続き、クラウド サービス プロジェクトで発行ウィザードを使用できます。 単独開発者としてのみ作業している場合、[すべてのロールに対してリモート デスクトップを有効にする] オプションも使用できます。
チームの一員として作業している場合、代わりに、Azure Portal か PowerShell を使用し、Azure クラウド サービスでリモート デスクトップを有効にしてください。
この推奨は、Visual Studio 2017 バージョン 15.5 以降とクラウド サービス VM の通信方法が変わったことに起因します。 発行ウィザードを使用してリモート デスクトップを有効にすると、以前のバージョンの Visual Studio は、"RDP プラグイン" を使用して VM と通信します。Visual Studio 2017 バージョン 15.5 以降では、代わりに安全性と柔軟性が向上した "RDP 拡張" を使用して通信します。 これは、Azure Portal と PowerShell でリモート デスクトップを有効にする場合にも RDP 拡張が使用されることに伴う変更です。
Visual Studio が RDP 拡張機能と通信する際、トランスポート層セキュリティ (TLS) 経由でプレーンテキストのパスワードが送信されます。 ただし、プロジェクトの構成ファイルは暗号化されたパスワードのみを格納します。元々暗号化に使用されたローカル証明書でのみ、プレーンテキストに復号できます。
毎回同じ開発コンピューターからクラウド サービス プロジェクトを配置する場合、ローカル証明書が利用できます。 この場合も、発行ウィザードの [すべてのロールに対してリモート デスクトップを有効にする] オプションを使用できます。
しかし、自分や他の開発者が他のコンピューターからクラウド サービス プロジェクトを展開する場合、それらの他のコンピューターには、パスワードの暗号化を解除するために必要な証明書がありません。 結果として、次のエラー メッセージが表示されます。
Applying remote desktop protocol extension.
Certificate with thumbprint [thumbprint] doesn't exist.
クラウド サービスを配置するたびにパスワードを変更することもできますが、それではリモート デスクトップの利用者にとって不便です。
チームとプロジェクトを共有している場合は、発行ウィザード内でこのオプションをオフにして、代わりに Azure Portal または PowerShell を使用して、直接リモート デスクトップを有効にすることをお勧めします。
Visual Studio 2017 バージョン 15.5 以降でビルド サーバーから配置する
Visual Studio 2017 バージョン 15.5 以降がビルド エージェントにインストールされているビルド サーバー (たとえば、Azure DevOps Services で) からクラウド サービス プロジェクトを配置できます。 このように手配すると、暗号化証明書が利用できる同じコンピューターから配置されます。
Azure DevOps Services の RDP 拡張を使用するには、ビルド パイプラインに次の詳細を含めます。
RDP プラグインではなく RDP 拡張と配置が連動するように、MSBuild 引数に
/p:ForceRDPExtensionOverPlugin=true
を追加します。 次に例を示します。msbuild AzureCloudService5.ccproj /t:Publish /p:TargetProfile=Cloud /p:DebugType=None /p:SkipInvalidConfigurations=true /p:ForceRDPExtensionOverPlugin=true
ビルド手順の後で、「Azure Cloud Service の配置」手順を追加し、そのプロパティを設定します。
配置手順の後、「Azure PowerShell」手順を追加し、その [表示名] プロパティを "Azure の配置: RDP 拡張機能を有効にする" (または別の適切な名前) に設定して、適切な Azure サブスクリプションを選びます。
[スクリプトの種類] を "インライン" に設定し、以下を [インライン スクリプト] フィールド内に貼り付けます。 (このスクリプトでプロジェクトに
.ps1
ファイルを作成し、[スクリプトの種類] を "スクリプト ファイル パス" に設定し、ファイルを指すように [スクリプト パス] を設定することもできます。)Param( [Parameter(Mandatory=$True)] [string]$username, [Parameter(Mandatory=$True)] [string]$password, [Parameter(Mandatory=$True)] [string]$serviceName, [Datetime]$expiry = ($(Get-Date).AddYears(1)) ) Write-Host "Service Name: $serviceName" Write-Host "User Name: $username" Write-Host "Expiry: $expiry" $securepassword = ConvertTo-SecureString -String $password -AsPlainText -Force $credential = New-Object System.Management.Automation.PSCredential $username,$securepassword # Try to remote existing RDP Extensions try { $existingRDPExtension = Get-AzureServiceRemoteDesktopExtension -ServiceName $servicename if ($existingRDPExtension -ne $null) { Remove-AzureServiceRemoteDesktopExtension -ServiceName $servicename -UninstallConfiguration } } catch { } Set-AzureServiceRemoteDesktopExtension -ServiceName $servicename -Credential $credential -Expiration $expiry -Verbose
リモート デスクトップを使用して Azure ロールに接続する
Azure 上でクラウド サービスを発行し、リモート デスクトップを有効にすると、Visual Studio のサーバー エクスプローラーを使用して、クラウド サービスの VM にログインできます。
サーバー エクスプローラーで、 [Azure] ノードを展開し、いずれかのクラウド サービスのノードとそのロールを 1 つ展開して、インスタンスの一覧を表示します。
インスタンス ノードを右クリックし、[Connect Using Remote Desktop](リモート デスクトップを使用して接続) を選択します。
以前作成したユーザー名とパスワードを入力します。 これで、リモート セッションにサインインしました。