【问题标题】:Where do I get my actual Azure Website Deployment password?我在哪里可以获得实际的 Azure 网站部署密码?
【发布时间】:2023-03-18 11:55:01
【问题描述】:

在 Visual Studio 2015 中,当我将我的网站/Web 应用程序发布到 Azure 时,我能够自动创建一个新的发布配置文件(通过输入我的个人 Azure 帐户凭据),这将创建 .pubxml.pubxml.user 文件.部署用户名的格式为“$websiteName”,密码由一长串项目符号表示。 .pubxml.user 文件包含实际密码,该密码经过加密,只有我的 Visual Studio 才能读取它,方法是使用我的本地 Windows 用户帐户对其进行解密 - 作为人类,我无法看到它。此外,.user 文件从源代码管理中排除(但 .pubxml 文件包含在源代码管理中)。

当我团队中的其他人尝试部署网站时,他们会获得相同的部署设置,但会提示输入“$website”帐户的密码。我不知道从哪里获取此密码 - Azure 管理门户不显示它。

如果此人打开门户并选择重置发布配置文件,那么他们可以下载一个新的 .pubxml 文件,其中包含一个加密密码,我知道只有他们的个人 Azure 凭据才能解密,但这会破坏我的部署和其他用户,因为现在他们保存的密码(在.user 文件中)已失效。

我知道这是与 Azure 门户上的“部署凭据”刀片不同的用户名+密码,因为目前该网站没有设置部署凭据,此外,如果我要设置一个,则用户名不同。门户网站声明这些凭据无论如何都用于 FTP 访问 - 没有提及 Web 部署功能。

【问题讨论】:

标签: azure deployment


【解决方案1】:

您可以通过门户或 PowerShell/CLI 获取当前凭据。

Azure 门户

在门户网站上,Web 应用刀片顶部有一个按钮,用于下载发布配置文件(不是部署凭据刀片,而是主 Web 应用刀片)。

Azure PowerShell

首先,确保已安装 Azure PowerShell cmdlet:https://docs.microsoft.com/en-us/powershell/azure/install-azurerm-ps?view=azurermps-6.3.0

  1. 打开提升的 PowerShell 窗口。
  2. 输入$PSVersionTable.PSVersion。确保输出显示您拥有主要版本 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 文件(没有换行符)。在里面你会发现一个具有这种结构的文档。在带有publishMethod="MSDeploy"<publishProfile> 元素中查找userPWD 属性。不要使用 FTP 凭据(在第二个 <publishProfile> 元素中),因为用户名不同。

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>

【讨论】:

  • 叹息。像往常一样,在没有指定如何获取命令的情况下唤起“Powershell”。 Get-AzureRmWebAppPublishingProfile :术语“Get-AzureRmWebAppPublishingProfile”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,如果包含路径,请验证路径是否正确并重试。
  • 您可能需要安装 Azure PowerShell cmdlet...试试这个:aka.ms/webpi-azps -- 如果您有多个订阅,您必须先登录-AzureRMAccount,然后选择-AzureRMSubscription。
  • 在我的例子中,我登录到 Azure 门户并从应用服务的刀片下载了发布配置文件,事实上,未加密的密码存在于文件中 - 我将其复制并粘贴到 VS 的发布向导,现在可以正常工作,无需重置任何内容..
【解决方案2】:

如果您不熟悉 PowerShell,可以尝试以下说明,使用 azure cli 获取部署用户名和密码。

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

您还添加 --query 以检索“userPWD”

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

输出会是这样的

oMarhPTTJc6F7muHfz11232342342342342420tv5Lwikf1Xc

【讨论】:

  • 您意识到在屏幕截图中屏蔽发布 URL 但不屏蔽目标 URL 对您没有帮助?
  • @SvenAelterman 感谢您警告我。我确实忘记了。但这没关系,因为我已经删除了这个应用程序。
  • 这些信用可以用来做什么?我通常不喜欢在日志文件中看到“userPwd”等。尤其是那些可以“粘贴在xyz领域做事”的。该文件应该受到保护吗?
猜你喜欢
  • 2010-12-14
  • 1970-01-01
  • 2013-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-13
  • 2022-01-23
  • 1970-01-01
相关资源
最近更新 更多