Локальный компьютер не может подключиться к новой только что созданной виртуальной машине Azure. Ошибка -… имя сервера не может быть разрешено

Стандартный отказ от ответственности, очень новый для удаленных машин PowerShell и Azure. Вот мой сценарий PowerShell. Ошибка при выполнении этой команды:

$ setupSession = New-PSSession -ComputerName $ pip -Port 5986 -Credential $ serviceCreds -UseSSL

вот мой сценарий.

# Variables for common values
$resourceGroup = "rgTest"
$location = "East US"
$vmName = "vmTest"
$SubscriptionName = "subscription test"
$StorageAccountName = "sanTest"
$NetworkSecurityGroupName  = "nsgTest"
$myNic = 'nicTest'
$MYvNET = 'vnetTest'
$myNetworkSecurityGroupRuleHTTP = 'nsgruleHTTPTest'
$myNetworkSecurityGroupRuleRDP = 'nsgruleRDPTest'
$myNetworkSecurityGroupRuleWWW = 'nsgruleWWWTest'
$myNetworkSecurityGroupRulePS = 'nsgrulePSTest'
$myNetworkSecurityGroup = 'nsgTest'
$rcgTest = 'rcgTest'

$secpasswd = ConvertTo-SecureString "password1" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential("test@user.org", $secpasswd)

Add-AzureRmAccount -Credential $cred
Login-AzureRmAccount -Credential $cred

Select-AzureRmSubscription -SubscriptionName $SubscriptionName
Get-AzureRmResourceGroup -Name $resourceGroup -ev notPresent -ea 0
if ($notPresent)
{
    New-AzureRmResourceGroup -Name $resourceGroup -Location $location
}

$subnetConfig = New-AzureRmVirtualNetworkSubnetConfig `
   -Name mySubnet `
   -AddressPrefix 192.168.1.0/24

New-AzureRmStorageAccount `
  -Location $Location `
  -ResourceGroupName $ResourceGroup `
  –StorageAccountName $StorageAccountName `
  -SkuName Standard_GRS `
  -SubscriptionName $SubscriptionName

$vnet = New-AzureRmVirtualNetwork `
  -ResourceGroupName $resourceGroup `
  -Location $location `
  -Name $MYvNET `
  -AddressPrefix 192.168.0.0/16 `
  -Subnet $subnetConfig

$pip = New-AzureRmPublicIpAddress ` 
   -ResourceGroupName $resourceGroup `
   -Location $location `
   -Name "mypublicdns$(Get-Random)" `
   -AllocationMethod Static `
   -IdleTimeoutInMinutes 4

$nsgRuleHTTP = New-AzureRmNetworkSecurityRuleConfig `
  -Name $myNetworkSecurityGroupRuleHTTP  `
  -Protocol Tcp `
  -Direction Inbound `
  -Priority 1000 `
  -SourceAddressPrefix * `
  -SourcePortRange * `
  -DestinationAddressPrefix * `
  -DestinationPortRange 80 `
  -Access Allow

$nsgRuleRDP = New-AzureRmNetworkSecurityRuleConfig `
   -Name $myNetworkSecurityGroupRuleRDP  `
   -Protocol Tcp `
   -Direction Inbound `
   -Priority 1100 `
   -SourceAddressPrefix * `
   -SourcePortRange * `
   -DestinationAddressPrefix * `
   -DestinationPortRange 3389 `
   -Access Allow

$nsgRulePS = New-AzureRmNetworkSecurityRuleConfig `
  -Name $myNetworkSecurityGroupRulePS  `
  -Protocol Tcp `
  -Direction Inbound `
  -Priority 1200 -SourceAddressPrefix * `
  -SourcePortRange * `
  -DestinationAddressPrefix * `
  -DestinationPortRange 5986 `
  -Access Allow

$nsg = New-AzureRmNetworkSecurityGroup `
  -ResourceGroupName $resourceGroup `
  -Location $location `
  -Name $myNetworkSecurityGroup `
  -SecurityRules $nsgRuleHTTP,$nsgRuleRDP

$nic = New-AzureRmNetworkInterface `
  -Name $myNic `
  -ResourceGroupName 

$resourceGroup 
   -Location $location `
   -SubnetId $vnet.Subnets[0].Id `
   -PublicIpAddressId $pip.Id `
   -NetworkSecurityGroupId $nsg.Id

$VMLocalAdminUser = "LocalAdminUser"
$VMLocalAdminSecurePassword = ConvertTo-SecureString "password1!" `
   -AsPlainText 
   -Force 

$Credential = New-Object System.Management.Automation.PSCredential ($VMLocalAdminUser, $VMLocalAdminSecurePassword); 

$vmConfig = New-AzureRmVMConfig -VMName $vmName -VMSize Standard_DS1_v2 | ` 
   Set-AzureRmVMOperatingSystem -Windows -ComputerName $vmName -Credential $Credential | `
   Set-AzureRmVMSourceImage -PublisherName MicrosoftWindowsServer -Offer WindowsServer -Skus 2016-Datacenter -Version latest | `
   Add-AzureRmVMNetworkInterface -Id $nic.Id 

New-AzureRmVM `
     -ResourceGroupName $resourceGroup `
     -Location $location `
     -VM $vmConfig

Get-AzureRmPublicIpAddress `
  -ResourceGroupName $resourceGroup | Select IpAddress

$PublicSettings = '{"commandToExecute":"powershell Add-WindowsFeature Web-Server"}'

Set-Item WSMan:\localhost\Client\TrustedHosts `
    -Value * #$pip.ToString() 

Enable-PSRemoting –Force

$serviceCreds = New-Object `
    -TypeName System.Management.Automation.PSCredential `
    -ArgumentList $VMLocalAdminUser, $VMLocalAdminSecurePassword

$setupSession = New-PSSession `
    -ComputerName $pip `
    -Port 5986 `
    -Credential $serviceCreds `
    -UseSSL

Remove-PSSession $setupSession
1
задан 19 May 2017 в 18:08
2 ответа

Насколько я понимаю, вы ни в коем случае не связываете свои NSG с вашей подсетью. Вам нужно запустить что-то вроде этого

$vnet = Get-AzureRmVirtualNetwork -ResourceGroupName TestRG -Name TestVNet
Set-AzureRmVirtualNetworkSubnetConfig -VirtualNetwork $vnet -Name FrontEnd `
-AddressPrefix 192.168.1.0/24 -NetworkSecurityGroup $nsg

Также, если вы хотите взглянуть на шаблоны ARM, они делают это намного проще.

0
ответ дан 4 December 2019 в 04:56

Я тестировал в своей лаборатории, в вашем скрипте есть некоторые ошибки. Вы не добавляете правила $ nsgRulePS в свою группу безопасности сети. Вам нужно изменить свой сценарий, как показано ниже:

$nsg = New-AzureRmNetworkSecurityGroup `
  -ResourceGroupName $resourceGroup `
  -Location $location `
  -Name $myNetworkSecurityGroup `
  -SecurityRules $nsgRuleHTTP,$nsgRuleRDP,$nsgRulePS

Я изменяю ваш сценарий, как показано ниже, у меня он работает.

# Variables for common values
$resourceGroup = "rgTest"
$location = "East US"
$vmName = "vmTest"
$SubscriptionName = "subscription test"
##storage account name is wrong  New-AzureRmStorageAccount : sanTest is not a valid storage account name. Storage account name must be between 3 and 24 characters in length and use numbers and lower-case letters only.
#$StorageAccountName = "sanTest"
$StorageAccountName = "shuitest12"
$NetworkSecurityGroupName  = "nsgTest"
$myNic = 'nicTest'
$MYvNET = 'vnetTest'
$myNetworkSecurityGroupRuleHTTP = 'nsgruleHTTPTest'
$myNetworkSecurityGroupRuleRDP = 'nsgruleRDPTest'
$myNetworkSecurityGroupRuleWWW = 'nsgruleWWWTest'
$myNetworkSecurityGroupRulePS = 'nsgrulePSTest'
$myNetworkSecurityGroup = 'nsgTest'
$rcgTest = 'rcgTest'

$secpasswd = ConvertTo-SecureString "password1" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential("test@user.org", $secpasswd)

Add-AzureRmAccount -Credential $cred
Login-AzureRmAccount -Credential $cred

Select-AzureRmSubscription -SubscriptionName $SubscriptionName
Get-AzureRmResourceGroup -Name $resourceGroup -ev notPresent -ea 0
if ($notPresent)
{
    New-AzureRmResourceGroup -Name $resourceGroup -Location $location
}

$subnetConfig = New-AzureRmVirtualNetworkSubnetConfig `
   -Name mySubnet `
   -AddressPrefix 192.168.1.0/24

New-AzureRmStorageAccount `
  -Location $Location `
  -ResourceGroupName $ResourceGroup `
  –StorageAccountName $StorageAccountName `
  -SkuName Standard_GRS 

$vnet = New-AzureRmVirtualNetwork `
  -ResourceGroupName $resourceGroup `
  -Location $location `
  -Name $MYvNET `
  -AddressPrefix 192.168.0.0/16 `
  -Subnet $subnetConfig

$pip = New-AzureRmPublicIpAddress -ResourceGroupName $resourceGroup `
   -Location $location `
   -Name "mypublicdns$(Get-Random)" `
   -AllocationMethod Static `
   -IdleTimeoutInMinutes 4

$nsgRuleHTTP = New-AzureRmNetworkSecurityRuleConfig `
  -Name $myNetworkSecurityGroupRuleHTTP  `
  -Protocol Tcp `
  -Direction Inbound `
  -Priority 1000 `
  -SourceAddressPrefix * `
  -SourcePortRange * `
  -DestinationAddressPrefix * `
  -DestinationPortRange 80 `
  -Access Allow

$nsgRuleRDP = New-AzureRmNetworkSecurityRuleConfig `
   -Name $myNetworkSecurityGroupRuleRDP  `
   -Protocol Tcp `
   -Direction Inbound `
   -Priority 1100 `
   -SourceAddressPrefix * `
   -SourcePortRange * `
   -DestinationAddressPrefix * `
   -DestinationPortRange 3389 `
   -Access Allow

$nsgRulePS = New-AzureRmNetworkSecurityRuleConfig `
  -Name $myNetworkSecurityGroupRulePS  `
  -Protocol Tcp `
  -Direction Inbound `
  -Priority 1200 -SourceAddressPrefix * `
  -SourcePortRange * `
  -DestinationAddressPrefix * `
  -DestinationPortRange 5986 `
  -Access Allow

$nsg = New-AzureRmNetworkSecurityGroup `
  -ResourceGroupName $resourceGroup `
  -Location $location `
  -Name $myNetworkSecurityGroup `
  -SecurityRules $nsgRuleHTTP,$nsgRuleRDP,$nsgRulePS

$nic = New-AzureRmNetworkInterface `
  -Name $myNic `
  -ResourceGroupName $resourceGroup `
   -Location $location `
   -SubnetId $vnet.Subnets[0].Id `
   -PublicIpAddressId $pip.Id `
   -NetworkSecurityGroupId $nsg.Id

##use name could not admin
$VMLocalAdminUser = "<your user name>"
$VMLocalAdminSecurePassword = ConvertTo-SecureString "<your password>" `
   -AsPlainText `
   -Force 

$Credential = New-Object System.Management.Automation.PSCredential ($VMLocalAdminUser, $VMLocalAdminSecurePassword); 

$vmConfig = New-AzureRmVMConfig -VMName $vmName -VMSize Standard_DS1_v2 | Set-AzureRmVMOperatingSystem -Windows -ComputerName $vmName -Credential $Credential | `
   Set-AzureRmVMSourceImage -PublisherName MicrosoftWindowsServer -Offer WindowsServer -Skus 2016-Datacenter -Version latest | `
   Add-AzureRmVMNetworkInterface -Id $nic.Id 

New-AzureRmVM `
     -ResourceGroupName $resourceGroup `
     -Location $location `
     -VM $vmConfig

Get-AzureRmPublicIpAddress `
  -ResourceGroupName $resourceGroup | Select IpAddress

Однако, когда виртуальная машина создана успешно, вы не сможете winrm напрямую обращаться к серверу. Вам необходимо выполнить следующие шаги:

1. Откройте порт 5986 на вашей виртуальной машине Windows, вам нужен RDP для вашей виртуальной машины и настройте его. Azure PowerShell не смог этого сделать.

2. Настройте winrm для прослушивания на 5986, по умолчанию он прослушивает 5985. Вам также необходимо добавить сертификат на вашу виртуальную машину. Пожалуйста, обратитесь к этой ссылке .

Обновление:

Если вы хотите использовать WinRM-HTTP, а не HTTP, вам не нужно настраивать сертификат на виртуальной машине, вам нужен только открытый порт 5985 в Windows Брандмауэр.

Примечания. Вы должны открыть порт 5985 в Azure NSG.

Вы можете сделать это с помощью расширения настраиваемого сценария , оно запускается при создании виртуальной машины.Просто ваш сценарий в виде файла ps.

New-NetFirewallRule -DisplayName "WinRM-HTTP- Allow Port 5985" -Direction Inbound -LocalPort 5985 -Protocol TCP -Action Allow

Вы можете загрузить сценарий в учетную запись хранилища Azure или на github.

Для получения дополнительной информации перейдите по этой ссылке .

0
ответ дан 4 December 2019 в 04:56

Теги

Похожие вопросы