无法连接到使用Azure Powershell创建的Azure虚拟机

时间:2015-01-28 21:08:16

标签: azure ssh azure-virtual-machine centos7 azure-powershell

我通过https://portal.azure.com/用户界面成功创建了一个Azure虚拟机。我开始使用Azure Powershell脚本来自动创建类似的VM,最终得到以下功能:

function Create-CentOSVirtualMachine
{
    Set-AzureSubscription -SubscriptionName Pay-As-You-Go -CurrentStorageAccount "thefoobar"

    Write-Output "Searching for the latest CentOS image..."

    $image = (Get-AzureVMImage | Where-Object { $_.Label -like "*CentOS*" } | select -last 1)

    $imageName = $image.ImageName
    $imageLabel = $image.Label
    $dataDiskSizeInGB = 30
    $diskLabel = "thefoobar-data"
    $mediaOsLocation = "https://thefoobar.blob.core.windows.net/vhds/thefoobar-os.vhd"
    $mediaDataLocation = "https://thefoobar.blob.core.windows.net/vhds/thefoobar-data.vhd"

    Write-Output "Creating CentOS virtual machine from:" $imageLabel

    $user = "thefoobardev"
    $password = "thefoobarpassword"

    $vmConfig = New-AzureVMConfig -Name "thefoobar" -MediaLocation $mediaOsLocation -InstanceSize Basic_A1 -ImageName $imageName

    $vm = $vmConfig | Add-AzureProvisioningConfig -Linux -LinuxUser $user -Password $password | Add-AzureDataDisk -CreateNew -DiskSizeInGB $dataDiskSizeInGB -DiskLabel $diskLabel -LUN 0 -MediaLocation $mediaDataLocation

    $vm | Add-AzureEndpoint -Name 'ElasticSearchHTTP' -LocalPort 9200 -PublicPort 9200 -Protocol tcp
    $vm | Add-AzureEndpoint -Name 'ElasticSearchTransport' -LocalPort 9300 -PublicPort 9300 -Protocol tcp
    $vm | Set-AzureEndpoint -Name 'SSH' -LocalPort 22 -PublicPort 22 -Protocol tcp

    New-AzureVM -ServiceName "thefoobar" -VNetName "MyFoobarNetwork" -VMs $vm -Location "East US"
}

对我而言,它似乎与我通过用户界面所做的相匹配(虽然我将脚本中的一些字符串重命名为“foobar”以解决此公开问题)。该脚本运行时没有任何错误,仪表板似乎完全按照我的预期显示我的VM。

但是,通过创建脚本,我无法通过PuTTY连接:

enter image description here

这通常是我在通过GUI创建VM后需要填写的所有内容。使用我的脚本可以让我连接,但在输入用户后显示错误:

enter image description here

这是我通过门户网站UI输入安全性详细信息的方式:

enter image description here

从门户网站创建时,我会在PuTTYing时询问用户的密码。我的Powershell脚本中是否有任何内容可以帮助我连接,因为我可以从门户创建VM时进行连接?


我尝试使用https://msdn.microsoft.com/en-us/library/azure/dn495299.aspx中显示的一些额外的Linux参数。

如果我添加-NoSSHEndpoint-DisableSSH,那么只需创建我的VM,但SSH的端点少一个。如果我手动添加端点,我仍然会收到相同的错误消息。如果我添加-NoSSHPassword,则会收到错误New-AzureVM : BadRequest: The UserPassword property must be specified.

1 个答案:

答案 0 :(得分:0)

我现有代码段中的以下行返回一个名为0b11de9248dd4d87b18621318e037d37__RightImage-CentOS-7.0-x64-v14.2的RightImage图片。

$image = (Get-AzureVMImage | Where-Object { $_.Label -like "*CentOS*" } | select -last 1)

我尝试使用OpenLogic的不同CentOS映像,现有的PowerShell脚本工作正常:

Get-AzureVMImage | Where-Object { $_.ImageName -like "*OpenLogic-CentOS*" } | select -last 1

它为我提供了图片5112500ae3b842c8b9c604889f8753c3__OpenLogic-CentOS-70-20150128

不确定是什么阻止RightImage图像允许远程连接。