无法通过端口 445 访问 Azure 存储帐户

Posted

技术标签:

【中文标题】无法通过端口 445 访问 Azure 存储帐户【英文标题】:Unable to reach the Azure storage account via port 445 【发布时间】:2021-10-29 09:23:13 【问题描述】:

我正在尝试使用驱动器标签“Azure Blob Storage”将 Blob 存储映射到 Z:,但由于某种原因无法识别该位置?

我遇到了这个异常:

Unable to reach the Azure storage account via port 445. Check to make sure your organization or ISP is not blocking port
445, or use Azure P2S ***, Azure S2S ***, or Express Route to tunnel SMB traffic over a different port.

LSTest代表FOLDER TO MAP参数

我做的第一件事是telnet 看看端口是否打开:

 C:\Windows\system32>telnet https://analyticsdev.blob.core.windows.net/ 445
 Connecting To https://analyticsdev.blob.core.windows.net/...Could not open connection to the host, on port 445: Connect failed

我也做了nslookup,但是明显没找到存放位置

根据我的截图,当它明显存在时它怎么没有找到它?

也可以通过地址+端口进行远程登录:

 C:\Windows\system32>nslookup https://analyticsdev.blob.core.windows.net/
 Server:  XXXXX.attlocal.net
 Address:  2600:...::1
    
 *** XXXXX.attlocal.net can't find https://analyticsdev.blob.core.windows.net/: Non-existent domain

这是我的脚本:

#set default values
if(!$BLOB_STORAGE_LOCATION) 
    $BLOB_STORAGE_LOCATION = "https://analyticsdev.blob.core.windows.net/"

if(!$STORAGE_ACCOUNT_NAME) 
    $STORAGE_ACCOUNT_NAME = "analyticsdev"

if(!$ACCESS_KEY) 
    $ACCESS_KEY = "2*********************="

if(!$FOLDER_TO_MAP) 
    $FOLDER_TO_MAP = "LSTest"

if(!$DRIVE_LETTER) 
    $DRIVE_LETTER = "Z"

if(!$DRIVE_LABEL) 
    $DRIVE_LABEL = "Azure Blob Storage"


<#
Author: Hadi Nasser
Purpose: This script will map a Blob Storage as network drive
#>

$connectTestResult = Test-NetConnection -ComputerName $BLOB_STORAGE_LOCATION -Port 445

if ($connectTestResult.TcpTestSucceeded) 
    # Save the password so the drive will persist on reboot
    cmd.exe /C "cmdkey /add:`"$BLOB_STORAGE_LOCATION`" /user:`"$STORAGE_ACCOUNT_NAME`" /pass:`"$ACCESS_KEY`""
    # Mount the drive
    New-PSDrive -Name $DRIVE_LETTER -PSProvider FileSystem -Root "\\$BLOB_STORAGE_LOCATION\$FOLDER_TO_MAP" -Persist
 
else 
    Write-Error -Message "Unable to reach the Azure storage account via port 445. Check to make sure your organization or ISP is not blocking port 445, or use Azure P2S ***, Azure S2S ***, or Express Route to tunnel SMB traffic over a different port."


(New-Object -ComObject Shell.Application).NameSpace("$($DRIVE_LETTER):").Self.Name = $DRIVE_LABEL

【问题讨论】:

您无法以这种方式连接到 Azure Blob 存储。仅适用于 Azure 文件存储。 @GauravMantri 所以你的意思是“文件共享”数据存储而不是容器是我应该使用的? 没错。您可以挂载文件共享而不是 Blob 容器。 @GauravMantri 即使文件共享失败:C:\Windows\system32&gt;telnet https://analyticsdev.file.core.windows.net/ls-test 445 错误:Connecting To https://analyticsdev.file.core.windows.net/ls-test...Could not open connection to the host, on port 445: Connect failed 在执行 telnet 或 nslookup 时,您需要指定主机,而不是 URL。 nslookup analyticsdev.blob.core.windows.net Server: localhost Address: 127.0.0.1 Non-authoritative answer: Name: blob.db3prdstr13a.store.core.windows.net Address: 52.239.137.68 Aliases: analyticsdev.blob.core.windows.net 【参考方案1】:

正如@Gaurav Mantri 在评论部分所建议的,您不能安装 blob 容器。您可以挂载文件共享。请查看Mount SMB Azure file share on Windows

根据您收到的错误,您的网络中似乎端口 445 被阻止。请与您的 IT 部门或 ISP 合作,打开 445 端口出站。

您可以在此thread 中找到其他可用选项

【讨论】:

我已经检查了 Azure 文件同步,但不幸的是我没有 Windows 服务器来安装同步代理 :( 但是,由于风暴,我的电源实际上已经断电,所以我连接到移动热点,并且我能够通过端口 445 进行连接!所以这不是组织问题,而是我的 ISP (ATT) 阻止了端口 445... 更新:即使映射了文件共享,我也无法像我希望的那样执行备份操作。实际上,我最终使用 1 个月的免费试用版在 Azure 上创建了一个 Windows VM,并安装了 Azure 文件同步代理并创建了一个存储帐户 > Azure 文件共享,还创建了一个 Azure 同步存储服务来连接服务器上安装的代理.我向 Azure 存储同步服务注册了服务器,并在其中的服务器端点旁边创建了一个“同步组”,以映射服务器上文件将同步的本地路径

以上是关于无法通过端口 445 访问 Azure 存储帐户的主要内容,如果未能解决你的问题,请参考以下文章

通过托管标识通过 Synapse 访问 Azure 存储帐户

无法通过 ARM 模板将 CMK 加密应用于 Azure 存储帐户

无法使用 Azure Fluent 获取存储帐户密钥

如何使用 Python 获取 Azure 的所有存储帐户名称及其访问密钥

如何在端口 445 被阻止的环境中挂载 Azure 文件共享

从 ASP.NET 应用程序访问 Azure 存储帐户文件共享