无法通过端口 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>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 存储帐户
如何使用 Python 获取 Azure 的所有存储帐户名称及其访问密钥