Visual Studio 2015では、Webサイト/ WebアプリをAzureに発行するときに、新しい発行プロファイルを自動的に作成できます(個人のAzureアカウントの資格情報を入力することにより)、.pubxml
および.pubxml.user
ファイル。展開ユーザー名の形式は「$websiteName
」とパスワードは長い一連の箇条書きで表されます。.pubxml.user
ファイルには、ローカルのWindowsユーザーアカウントで復号化することにより、Visual Studioのみが読み取ることができるように暗号化された実際のパスワードが含まれています。私は人間として見ることができません。また、.user
ファイルはソース管理から除外されます(ただし、.pubxml
ファイルはソース管理に含まれています)。
チームの別の人がWebサイトを展開しようとすると、同じ展開設定が取得されますが、「$website
"アカウント。このパスワードの取得元がわかりません。Azure管理ポータルには表示されません。
ユーザーがポータルを開き、公開プロファイルをリセットすることを選択した場合、新しい.pubxml
暗号化されたパスワードを含むファイルで、個人のAzure資格情報のみが解読できることを理解していますが、保存されたパスワード(.user
ファイル)は無効になります。
現在、Webサイトには展開資格情報が設定されていないため、これはAzureポータルの「展開資格情報」ブレードとは異なるユーザー名+パスワードであることを理解しています。ポータルは、これらの資格情報はいずれにせよFTPアクセス用であると述べています-Web配置機能については言及されていません。
ポータルまたはPowerShell/CLIを使用して、現在の資格情報を取得できます。
ポータルのwebappブレードの上部には、公開プロファイル(展開資格情報ブレードではなく、メインWebアプリブレード)をダウンロードするためのボタンがあります。
最初に、Azure PowerShellコマンドレットがインストールされていることを確認します。 https://docs.Microsoft.com/en-us/powershell/Azure/install-azurerm-ps?view=azurermps-6.3.
$PSVersionTable.PSVersion
と入力します。出力に、メジャーバージョン5以降が表示されていることを確認します。このコマンドでエラーが発生した場合、この時点で古くなったPowerShell v1を実行しています。Install-Module -Name AzureRM
と入力します(NuGetの更新を求められる場合がありますが、その場合は必要です)Import-Module AzureRM
と入力しますConnect-AzureRmAccount
と入力して、認証プロセスを完了します。このコマンドを実行して、パブリッシングプロファイルをディスク上のファイルに保存します(読みやすくするために改行が追加されていますが、実際にはこれを1行に入れてください)。 $WebAppName
および$ResourceGroupName
を適切に設定します。
Get-AzureRmWebAppPublishingProfile
-ResourceGroupName $ResourceGroupName
-Name $WebAppName
-OutputFile creds.xml
-Format WebDeploy
.publishsettings
ファイルはXMLファイルです(改行なし)。内部には、この構造を持つドキュメントがあります。 <publishProfile>
を含むpublishMethod="MSDeploy"
要素でuserPWD
属性を探します。ユーザー名が異なるため、FTP資格情報(2番目の<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に慣れていない場合は、以下の手順を試して、 Azure cli を使用して展開のユーザー名とパスワードを取得できます。
az webapp deployment list-publishing-profiles --name your_web_app_name --resource-group your_resource_group
また、「userPWD」を取得する--queryを追加します
az webapp deployment list-publishing-profiles --name your_web_app_name --resource-group your_resource_group --query '[].userPWD' -o tsv
出力は次のようになります
oMarhPTTJc6F7muHfz11232342342342342420tv5Lwikf1Xc