由于我的电脑曾经管理过两个Azure订阅,这两天在上传VHD文件到Azure时出现了“找不到存储账号”及“证书不匹配”的问题。

场景还原

第一天使用Azure账号A上传VHD,没有出现问题。第二天使用Azure账号B上传VHD是,出现了如下提示”The storage account was not found”

Azure Powershell管理多订阅及证书

再次核对Azure管理后台,确定存储账号“uploadtest”是存在的。先来看看存储账号<Get-AzureStorageAccount>,结果提示“No certificate was found in the certificate store with thumbprint”

Azure Powershell管理多订阅及证书

问题分析

a. 近期我使用Azure Powershell管理过两个Azure账号,可能是Azure账号识别不正确;

b. Powershell执行命令时不需要输入Azure账号信息,那么本地计算机肯定保存了Azure账号的相关信息;

c. 在所有操作过程中,只是从Azure下载过证书并安装到本地计算机上了,而上图中也有提示证书的问题。

解决过程

1. 查看证书

在操作最初,我用<Import-AzurePublishSettingsFile>导入过从Azure下载的证书。此证书存放在当前用户的个人目录下

Azure Powershell管理多订阅及证书

2. 查看本机关联的Azure订阅

命令<Get-AzureSubscription>

从下图中可以看出有两个不同的Azure订阅“1RMB Trail Offer”和“免费试用”,而“1RMB Trail Offer”的DefaultAccount值与上面提示“No certificate was found in the certificate store with thumbprint”的证书指纹完全吻合。“1RMB Trail Offer”的另外两个属性IsDefault和IsCurrent值均为True,与“免费试用”相反,即默认订阅和当前活动订阅均为“1RMB Trail Offer”。

Azure Powershell管理多订阅及证书

那么,问题来了,我现在需要管理订阅“免费试用”,该怎么办?

3. 选择Azure订阅

命令<Select-AzureSubscription>

执行完成后可以看到,订阅“1RMB Trail Offer”和“免费试用”的IsCurrent值变为对调了,即当前活动订阅变为“免费试用”

Azure Powershell管理多订阅及证书

4. 再次查看存储账号

再次查看存储账号,发现属性正常了,正式我想要管理的

Azure Powershell管理多订阅及证书

5. 上传VHD文件

终于可以正常上传了,可以看到进度

Azure Powershell管理多订阅及证书

插曲-证书指纹更新

针对提示“No certificate was found in the certificate store with thumbprint”,还有另外一个插曲。

我在管理订阅“免费试用”对应的账号时,生成过多张证书,从上图中3个证书指纹就可发现。而我电脑仅保留了最后一张证书(指纹EA1AED开头的),但是Azure的订阅关联的默认证书是第一张(证书指纹263B87开头的),见下图

Azure Powershell管理多订阅及证书

此时我在进行VHD上传时,同样出现了证书错误,见下图

Azure Powershell管理多订阅及证书

处理办法,更新订阅关联的默认证书指纹

命令

<$mycert = Get-Item Cert:\CurrentUser\My\证书指纹>

<Set-AzureSubscription -SubscriptionName "订阅名称" -Certificate $mycert>

完成后结果如下

Azure Powershell管理多订阅及证书

本文结束

转载于:https://blog.51cto.com/hongc/1564523

分类:

技术点:

相关文章: