Невозможно смонтировать Azure File Share как диск на моей локальной машине - PullRequest
0 голосов
/ 30 марта 2020

Я создал учетную запись хранения и VPN-соединение Point to Site для подключения к локальной системе. Я хотел смонтировать файловую папку как диск на моей локальной машине. Даже после того, как VPN был создан, и я смог успешно подключиться к виртуальной машине в виртуальной сети, используя ее частный IP-адрес, но каким-то образом монтирование не происходит. Он говорит, что сетевой путь не существует.

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

https://gallery.technet.microsoft.com/Troubleshooting-tool-for-a9fa1fe5

Кроме того, при создании частной конечной точки в учетной записи хранения возникает ошибка. В сообщении об ошибке «Операция ресурса завершена с состоянием инициализации терминала». Это полный беспорядок. Пожалуйста, помогите

1 Ответ

0 голосов
/ 31 марта 2020

По умолчанию общий файловый ресурс Azure общедоступен, вам не нужно использовать P2S VPN-подключение для подключения Azure общего файлового ресурса в качестве диска на локальном компьютере.

Для подключения Azure общий файловый ресурс с PowerShell на Windows, вы можете сослаться this .

$resourceGroupName = "<your-resource-group-name>"
$storageAccountName = "<your-storage-account-name>"
$fileShareName = "<your-file-share-name>"

# These commands require you to be logged into your Azure account, run Login-AzAccount if you haven't
# already logged in.
$storageAccount = Get-AzStorageAccount -ResourceGroupName $resourceGroupName -Name $storageAccountName
$storageAccountKeys = Get-AzStorageAccountKey -ResourceGroupName $resourceGroupName -Name $storageAccountName
$fileShare = Get-AzStorageShare -Context $storageAccount.Context | Where-Object { 
    $_.Name -eq $fileShareName -and $_.IsSnapshot -eq $false
}

if ($fileShare -eq $null) {
    throw [System.Exception]::new("Azure file share not found")
}

# The value given to the root parameter of the New-PSDrive cmdlet is the host address for the storage account, 
# <storage-account>.file.core.windows.net for Azure Public Regions. $fileShare.StorageUri.PrimaryUri.Host is 
# used because non-Public Azure regions, such as sovereign clouds or Azure Stack deployments, will have different 
# hosts for Azure file shares (and other storage resources).
$password = ConvertTo-SecureString -String $storageAccountKeys[0].Value -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential -ArgumentList "AZURE\$($storageAccount.StorageAccountName)", $password
New-PSDrive -Name <desired-drive-letter> -PSProvider FileSystem -Root "\\$($fileShare.StorageUri.PrimaryUri.Host)\$($fileShare.Name)" -Credential $credential -Persist

Для Linux вы можете получить более подробную информацию о , используя Azure Файлы с Linux.

Редактировать

Azure Файлы предоставляют два основных типа конечных точек для доступа к Azure общим папкам :

  • Publi c конечные точки , которые имеют общедоступный c IP-адрес и могут быть доступны из любой точки мира.
  • Частные конечные точки , которые существуют в виртуальной сети и имеют частный IP-адрес из адресного пространства этой виртуальной сети.

По умолчанию файл azure предоставляет конечную точку publi c, которую вы можете доступ из любой точки мира, но если у вас есть VPN-подключение, доступ осуществляется через внутренний частный IP-адрес.

Без VPN-подключения вы можете выполнить описанные выше шаги в этом документе. Чтобы использовать соединение P2S VPN с Azure файлами, вам не нужно открывать порт 445. Здесь - полные шаги.

Во-первых, вам нужно настроить P2S VPN соединение для каждого клиента, который хочет подключиться.

Затем следуйте примеру, чтобы смонтировать общий ресурс, перечислите каталог root общего ресурса, чтобы убедиться, что общий ресурс действительно подключен, а затем отключите общий ресурс.

$myShareToMount = "<file-share>"

$storageAccountKeys = Get-AzStorageAccountKey `
    -ResourceGroupName $resourceGroupName `
    -Name $storageAccountName
$storageAccountKey = ConvertTo-SecureString `
    -String $storageAccountKeys[0].Value `
    -AsPlainText `
    -Force

$nic = Get-AzNetworkInterface -ResourceId $privateEndpoint.NetworkInterfaces[0].Id
$storageAccountPrivateIP = $nic.IpConfigurations[0].PrivateIpAddress

Invoke-Command `
    -Session $sessions `
    -ArgumentList  `
        $storageAccountName, `
        $storageAccountKey, `
        $storageAccountPrivateIP, `
        $myShareToMount `
    -ScriptBlock {
        $storageAccountName = $args[0]
        $storageAccountKey = $args[1]
        $storageAccountPrivateIP = $args[2]
        $myShareToMount = $args[3]

        $credential = [System.Management.Automation.PSCredential]::new(
            "AZURE\$storageAccountName", 
            $storageAccountKey)

        New-PSDrive `
            -Name Z `
            -PSProvider FileSystem `
            -Root "\\$storageAccountPrivateIP\$myShareToMount" `
            -Credential $credential `
            -Persist | Out-Null
        Get-ChildItem -Path Z:\
        Remove-PSDrive -Name Z
    }

К сожалению, невозможно постоянно смонтировать общий ресурс поверх PowerShell remoting . Для постоянного монтирования см. Использование общего файлового ресурса Azure с Windows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...