Где я могу получить свой фактический пароль для развертывания веб-сайта Azure?

В Visual Studio 2015, когда я публикую свой сайт /Webapp для Azure, я могу автоматически создать новый профиль публикации (путем ввода моих личных учетных данных учетной записи Azure), это создает файлы .pubxml и .pubxml.user, Имя пользователя развертывания имеет форму "$websiteName", а пароль представлен длинной серией пулевых точек. Файл .pubxml.user содержит фактический пароль, который зашифрован таким образом, что только моя Visual Studio может его прочитать, дешифруя его с помощью моей локальной учетной записи пользователя Windows - я, как человек, не могу ее увидеть. Кроме того, файлы .user исключены из Source Control (но файлы .pubxml включены в Source Control).

Когда другой человек из моей команды пытается развернуть веб-сайт, они получают одинаковые параметры развертывания, но запрашивают пароль для учетной записи "$website". Я понятия не имею, откуда взять этот пароль - портал Azure Management не отображает его.

Если пользователь открывает портал и выбирает Reset профиль публикации, он может загрузить новый .pubxml файл, содержащий зашифрованный пароль, который, как я понимаю, может расшифровывать только их личные учетные данные Azure, но это нарушает развертывание для меня и других пользователей, потому что теперь их сохраненные пароли (в файлах .user) недействительны.

Я понимаю, что это другое имя пользователя + пароль к клику "Deployment Credentials" на портале Azure, потому что в настоящее время на сайте нет установленных учетных данных Deployment, кроме того, если я должен был установить его, то имя пользователя отличается. Портал утверждает, что эти учетные данные для FTP-доступа в любом случае - не упоминается функция Web Deploy.

Ответ 1

Вы можете получить текущие учетные данные через портал или PowerShell/CLI.

Лазурный портал

На портале в верхней части блейда веб-приложения есть кнопка для загрузки профиля публикации (не блейд учетных данных развертывания, а основной блейд веб-приложения).

Screenshot of Azure Portal as of April 2019

Azure PowerShell

Сначала убедитесь, что командлеты Azure PowerShell установлены: https://docs.microsoft.com/en-us/powershell/azure/install-azurerm-ps?view=azurermps-6.3.0.

  1. Откройте окно PowerShell с повышенными правами.
  2. Введите $PSVersionTable.PSVersion. Убедитесь, что вывод показывает, что у вас есть Major версии 5 или новее. Если эта команда выдает ошибку, вы запускаете PowerShell v1, который на данный момент является древним.
  3. Введите Install-Module -Name AzureRM (вам может быть предложено обновить NuGet, в этом случае вам следует)
  4. Подождите, пока он закончит установку.
  5. Введите Import-Module AzureRM
  6. Введите Connect-AzureRmAccount и завершите процесс аутентификации.
  7. Запустите эту команду, чтобы сохранить профиль публикации в файле на диске (разрывы строк добавлены для удобства чтения, на самом деле это одна строка). Установите $WebAppName и $ResourceGroupName соответствующим образом:

    Get-AzureRmWebAppPublishingProfile
        -ResourceGroupName $ResourceGroupName
        -Name $WebAppName
        -OutputFile creds.xml
        -Format WebDeploy
    

файл .publishsettings

Файл .publishsettings представляет собой файл XML (без переносов строк). Внутри вы найдете документ с этой структурой. Найдите атрибут userPWD в <publishProfile> с publishMethod="MSDeploy". Не используйте учетные данные FTP (во втором <publishProfile>), потому что имя пользователя другое.

userPWD атрибута userPWD не зашифровано, но является base64 (или base62?) Кодированием совершенно случайных байтов. Вы можете скопировать и вставить это значение непосредственно в запрос учетных данных в мастере публикации Visual Studio.

<publishData>
    <publishProfile
        profileName="SITE - Web Deploy"
        publishMethod="MSDeploy"
        publishUrl="SITE.scm.azurewebsites.net:443"
        msdeploySite="SITE"
        userName="$SITE"
        userPWD="YOUR PASSWORD IS HERE"                    <-- This attribute here
        destinationAppUrl="http://SITE.azurewebsites.net"
        SQLServerDBConnectionString=""
        mySQLDBConnectionString=""
        hostingProviderForumLink=""
        controlPanelLink=""
        webSystem="WebSites"
    >
        <databases />
    </publishProfile>

    <publishProfile
        profileName="SITE - FTP"
        publishMethod="FTP"
        publishUrl="ftp://SITE.ftp.azurewebsites.windows.net/site/wwwroot"
        ftpPassiveMode="True"
        userName="SITE\$SITE"
        userPWD="FTP PASSWORD IS HERE"
        destinationAppUrl="http://SITE.azurewebsites.net"
        SQLServerDBConnectionString=""
        mySQLDBConnectionString=""
        hostingProviderForumLink=""
        controlPanelLink=""
        webSystem="WebSites"
    >
        <databases />
    </publishProfile>
</publishData>

Ответ 2

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

az webapp deployment list-publishing-profiles --name your_web_app_name --resource-group your_resource_group

enter image description here

Вы также добавляете --query для получения "userPWD"

az webapp deployment list-publishing-profiles --name your_web_app_name --resource-group your_resource_group --query '[].userPWD' -o tsv

Выход будет как

oMarhPTTJc6F7muHfz11232342342342342420tv5Lwikf1Xc