Поделиться через


Включение подключения удаленного рабочего стола для роли в Облачных службах Azure (классические) с помощью Visual Studio

Внимание

Облачные службы (классическая версия) объявлены устаревшими для новых клиентов. Их поддержка будет полностью прекращена 31 августа 2024 года. Для новых развертываний следует использовать Облачные службы Azure с расширенной поддержкой. Это новая модель развертывания на основе Azure Resource Manager.

Удаленный рабочий стол позволяет получить доступ к рабочему столу роли, работающей в Azure, с помощью протокола удаленного рабочего стола (RDP). Подключение к удаленному рабочему столу можно использовать для устранения и диагностики проблем с приложением во время его запуска.

Мастер публикации, доступный в Visual Studio для облачных служб, позволяет во время процесса публикации включить удаленный рабочий стол с помощью предоставленных вами учетных данных. Эта возможность будет хорошим вариантом в Visual Studio 2017 версии 15.4 и более ранних версий.

В Visual Studio 2017 версии 15.5 и более поздних версиях рекомендуется избегать включения удаленного рабочего стола с помощью мастера публикации, если вы не работаете в качестве одного разработчика. В любой ситуации, в которой несколько разработчиков открывают проект, следует вместо этого включить удаленный рабочий стол через портал Azure, через PowerShell или из конвейера выпуска в рабочем процессе непрерывного развертывания. Эта рекомендация связана с изменением способа взаимодействия Visual Studio с удаленным рабочим столом на виртуальной машине облачной службы, как описано в этой статье.

Настройка удаленного рабочего стола с помощью Visual Studio 2017 версии 15.4 или более ранней версии

Если вы используете Visual Studio 2017 версии 15.4 или более ранней, вы можете использовать параметр Включить удаленный рабочий стол для всех ролей в мастере публикации. В Visual Studio 2017 версии 15.5 или более поздней версии вы также можете использовать мастер публикации, но не следует выбирать в нем включение удаленного рабочего стола.

  1. Чтобы открыть мастер публикации в Visual Studio, щелкните правой кнопкой мыши проект облачной службы в обозревателе решений и выберите действие Опубликовать.

  2. Войдите в подписку Azure, если потребуется, и выберите Далее.

  3. На странице Параметры выберите Включить удаленный рабочий стол для всех ролей, а затем ссылку Параметры... , чтобы открыть диалоговое окно Конфигурация удаленного рабочего стола.

  4. В нижней части этого диалогового окна выберите Дополнительно. Это действие отобразит раскрывающийся список, в котором можно создать или выбрать сертификат, чтобы шифровать учетные данные при подключении через удаленный рабочий стол.

    Примечание.

    Сертификаты, необходимые для подключения к удаленному рабочему столу, отличаются от сертификатов, используемых для других операций в Azure. Сертификат удаленного доступа должен иметь закрытый ключ.

  5. Выберите сертификат из списка или нажмите <Создать...>. Если вы создаете новый сертификат, укажите для него понятное имя и нажмите ОК. Новый сертификат появится в раскрывающемся списке.

  6. Предоставьте имя пользователя и пароль. Нельзя использовать существующую учетную запись. Не указывайте для новой учетной записи имя Administrator.

  7. Выберите дату истечения срока действия учетной записи. Учетная запись с истекшим сроком действия автоматически блокирует дополнительные подключения к удаленному рабочему столу.

  8. После предоставления всех необходимых сведений нажмите кнопку "ОК". Visual Studio сохранит эти параметры удаленного рабочего стола в файлы проекта .cscfg и .csdef, при этом зашифровав пароль с помощью выбранного сертификата.

  9. Выполните все оставшиеся действия, нажимая кнопку Далее. Когда все будет готово для публикации облачной службы, выберите действие Опубликовать. Если вы еще не готовы к публикации, выберите Отменить и подтвердите запрос на сохранение изменений, нажав Да. Вы сможете опубликовать облачную службу позже, используя сохраненные параметры.

Настройка удаленного рабочего стола с помощью Visual Studio 2017 версии 15.5 или более поздней версии

В Visual Studio 2017 версии 15.5 или более поздней вы также можете использовать мастер публикации для проекта облачной службы. Если вы единственный разработчик в этом проекте, вы можете выбрать в мастере действие Разрешить удаленный рабочий стол для всех ролей.

Но если над проектом работает целая команда, для облачной службы Azure лучше использовать удаленный рабочий стол через портал Azure или PowerShell.

Эта рекомендация связана с тем, что в Visual Studio 2017 версии 15.5 внесены некоторые измерения во взаимодействие с виртуальной машиной облачной службы. При включении удаленного рабочего стола с помощью мастера публикации более ранние версии Visual Studio взаимодействуют с виртуальной машиной с помощью подключаемого модуля RDP. Visual Studio 2017 версии 15.5 и более поздних версий взаимодействует с использованием расширения RDP, более безопасного и гибкого. Такое изменение связано с тем, что портал Azure и методы PowerShell для поддержки удаленного рабочего стола также применяют это расширение.

Когда Visual Studio взаимодействует с расширением RDP, он передает пароль обычного текста по протоколу TLS. Но в файлах конфигурации проекта хранится только зашифрованный пароль. Чтобы получить его в обычном текстовом виде, необходимо сохранить локально и применить тот же сертификат, который использовался для его шифрования.

Если вы развертываете проект облачной службы только с одного компьютера разработки, локальный сертификат будет всегда доступен для этого процесса. В этом случае вы также можете использовать параметр Включить удаленный рабочий стол для всех ролей в мастере публикации.

Однако если вы или другие разработчики хотят развернуть проект облачной службы с разных компьютеров, то другие компьютеры не имеют необходимого сертификата для расшифровки пароля. В результате вы видите следующее сообщение об ошибке:

Applying remote desktop protocol extension.
Certificate with thumbprint [thumbprint] doesn't exist.

Можно, например, изменять пароль при каждом развертывании облачной службы, но это вряд ли понравится тем, кто использует удаленный рабочий стол.

Если вы предоставляете общий доступ к проекту команде, рекомендуется очистить параметр в мастере публикации и включить удаленный рабочий стол непосредственно через портал Azure или с помощью PowerShell.

Развертывание с сервера построения с использованием Visual Studio 2017 версии 15.5 или более поздней версии

Проект облачной службы можно развернуть с сервера сборки (например, с помощью Azure DevOps Services), на котором в агенте сборки установлена Visual Studio 2017 версии 15.5 или более поздней. При такой схеме развертывание всегда выполняется с того компьютера, на котором есть нужный сертификат шифрования.

Чтобы использовать расширение удаленного рабочего стола из Azure DevOps Services, включите в конвейер сборки следующие данные:

  1. Добавьте /p:ForceRDPExtensionOverPlugin=true в аргументы MSBuild, чтобы развертывание выполнялось через расширение удаленного рабочего стола, а не подключаемый модуль удаленного рабочего стола. Например:

    msbuild AzureCloudService5.ccproj /t:Publish /p:TargetProfile=Cloud /p:DebugType=None
        /p:SkipInvalidConfigurations=true /p:ForceRDPExtensionOverPlugin=true
    
  2. После остальных шагов сборки добавьте шаг Развертывание облачной службы Azure и настройте его свойства.

  3. После шага развертывания добавьте шаг Azure PowerShell и укажите в нем для параметра Отображаемое имя значение "Развертывание Azure: включить расширение удаленного рабочего стола" (или другое имя, которое вы сочтете подходящим) и выберите нужную подписку Azure.

  4. Задайте для типа скрипта значение Inline и вставьте следующее в поле встроенного скрипта . Можно также создать в проекте файл .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 для входа в виртуальную машину облачной службы:

  1. В обозревателе сервера разверните узел Azure , а затем разверните узел для облачной службы и одну из ее ролей, чтобы отобразить список экземпляров.

  2. Щелкните этот узел экземпляра правой кнопкой мыши и выберите действие Подключиться с помощью удаленного рабочего стола.

  3. Введите имя пользователя и пароль, созданный ранее. Теперь вы вошли в удаленный сеанс.

Следующие шаги