使用 SSH 檔案傳輸通訊協定 (SFTP) 連線至 Azure Blob 儲存體

您可以使用 SFTP 用戶端,安全地連線到 Azure 儲存體帳戶的 Blob 儲存體端點,然後上傳及下載檔案。 本文說明如何啟用 SFTP,然後使用 SFTP 用戶端連線到 Blob 儲存體。

若要深入了解 Azure Blob 儲存體中的 SFTP 支援,請參閱 Azure Blob 儲存體中的 SSH 檔案傳輸通訊協定 (SFTP)

必要條件

  • 標準一般用途 v2 或進階區塊 blob 儲存體帳戶。 建立帳戶時,您也可以啟用 SFTP。 如需這些儲存體帳戶類型的詳細資訊,請參閱儲存體帳戶概觀

  • 必須啟用帳戶的階層命名空間功能。 若要啟用階層命名空間功能,請參閱使用 Azure Data Lake Storage Gen2 功能升級 Azure Blob 儲存體

  • 如果您要從內部部署網路連線,請確定您的用戶端允許透過 SFTP 所使用的連接埠 22 進行傳出通訊。

啟用 SFTP 支援

本節說明如何為現有的儲存體帳戶啟用 SFTP 支援。 若要檢視在建立帳戶過程中啟用 SFTP 支援的 Azure Resource Manager 範本,請參閱在 Azure 上建立可以使用 SFTP 通訊協定存取的 Azure 儲存體帳戶和 Blob 容器。 若要檢視本機使用者 REST API 和 .NET 參考,請參閱本機使用者LocalUser 類別

  1. Azure 入口網站中,瀏覽至您的儲存體帳戶。

  2. 在 [設定] 下方,選取 [SFTP]

    注意

    只有在帳戶已啟用階層命名空間功能時,才會出現此選項。 若要啟用階層命名空間功能,請參閱使用 Azure Data Lake Storage Gen2 功能升級 Azure Blob 儲存體

  3. 選取 [啟用 SFTP]

    Enable SFTP button

    注意

    如果 [SFTP 設定] 頁面中沒有顯示任何本機使用者,您必須至少新增其中一個使用者。 若要新增本機使用者,請參閱下一節。

停用 SFTP 支援

本節說明如何為現有的儲存體帳戶停用 SFTP 支援。 由於 SFTP 支援會產生每小時的成本,因此請考慮在用戶端未主動使用 SFTP 傳輸資料時停用 SFTP 支援。

  1. Azure 入口網站中,瀏覽至您的儲存體帳戶。

  2. 在 [設定] 下方,選取 [SFTP]

  3. 選取 [停用 SFTP]

    Screenshot of the disable SFTP button.

設定權限

Azure 儲存體不支援共用存取簽章 (SAS),或 Microsoft Entra 驗證來存取 SFTP 端點。 相反地,您必須使用名為本機的身分識別,此身分識別可以使用 Azure 產生的密碼或安全殼層 (SSH) 金鑰組來保護。 若要授與連接用戶端的存取權,儲存體帳戶必須具有與密碼或金鑰組相關聯的身分識別。 該身分識別稱為本機使用者

在本節中,您將了解如何建立本機使用者、選擇驗證方法,以及指派該本機使用者的使用權限。

若要深入了解 SFTP 權限模型,請參閱 SFTP 權限模型

提示

本節說明如何設定現有儲存體帳戶的本機使用者。 若要檢視在建立帳戶過程中設定本機使用者的 Azure Resource Manager 範本,請參閱在 Azure 上建立可以使用 SFTP 通訊協定存取的 Azure 儲存體帳戶和 Blob 容器

  1. Azure 入口網站中,瀏覽至您的儲存體帳戶。

  2. 在 [設定] 下方,選取 SFTP,然後選取 [新增本機使用者]

    Add local users button

  3. 在 [新增本機使用者] 窗格中,新增使用者的名稱,然後選取您要與這個本機使用者產生關聯的驗證方法。 您可以關聯密碼及/或 SSH 金鑰。

    重要

    雖然您可以同時啟用這兩種驗證方法,但 SFTP 用戶端只能使用其中一種進行連線。 多重要素驗證,即需要有效密碼和有效的公開和私密金鑰,才能進行成功驗證,不支援此驗證方法。

    如果您選取 [SSH 密碼],則在您完成 [新增本機使用者] 設定窗格中的所有步驟時,就會出現您的密碼。 SSH 密碼會由 Azure 產生,長度至少為 32 個字元。

    如果您選取 [SSH 金鑰組],則請選取 [公用金鑰來源] 以指定金鑰來源。

    Local user configuration pane

    下表說明每個金鑰來源選項:

    選項 指引
    產生新的金鑰組 使用此選項以建立新的公開/私密金鑰組。 公開金鑰會以您提供的金鑰名稱儲存在 Azure 中。 您可以在成功新增本機使用者之後下載私密金鑰。
    使用儲存在 Azure 中的現有金鑰 如果您想要使用已儲存在 Azure 中的公開金鑰,請使用此選項。 若要在 Azure 中尋找現有的金鑰,請參閱清單金鑰。 當 SFTP 用戶端連線到 Azure Blob 儲存體時,這些用戶端必須提供與這個公開金鑰相關聯的私密金鑰。
    使用現有的公開金鑰 如果您想要上傳儲存在 Azure 外部的公開金鑰,請使用此選項。 如果您沒有公開金鑰,但想要在 Azure 外部產生一個公開金鑰,請參閱使用 ssh-keygen 產生金鑰

    注意

    現有的公開金鑰選項目前僅支援 OpenSSH 格式化的公開金鑰。 提供的金鑰必須遵循此格式:<key type> <key data>。 例如,RSA 金鑰看起來會像這樣:ssh-rsa AAAAB3N...。 如果您的金鑰是另一種格式,則這類 ssh-keygen 工具可用來將其轉換成 OpenSSH 格式。

  4. 選取 [下一步 ] 以開啟設定窗格的 [ 容器權限] 索引標籤。

  5. 在 [容器權限] 索引標籤中,選取這個本機使用者可以使用的容器。 然後,選取您要讓這個本機使用者執行的作業類型。

    Container permissions tab

    重要

    本機使用者必須對連線的容器至少具有一個容器權限,否則連線嘗試將會失敗。

  6. 在 [主目錄] 編輯方塊中,輸入容器名稱或目錄路徑 (包含容器名稱),做為與這個本機使用者相關聯的預設位置。

    若要深入了解主目錄,請參閱主目錄

  7. 選取 [新增] 按鈕以新增本機使用者。

    如果您已啟用密碼驗證,則在新增本機使用者之後,Azure 產生的密碼就會出現在對話方塊中。

    重要

    您無法在日後擷取此密碼,因此請務必複製密碼,然後將它儲存在您可以找到的位置。

    如果您選擇產生新的金鑰組,則在新增本機使用者之後,系統會提示您下載該金鑰組的私密金鑰。

    注意

    本機使用者具有 sharedKey 屬性,僅用於 SMB 驗證。

連線 SFTP 用戶端

您可以使用任何 SFTP 用戶端,安全地連接並傳送檔案。 下列螢幕擷取畫面顯示的 Windows PowerShell 工作階段使用 Open SSH 和密碼驗證進行連線,然後上傳名稱為 logfile.txt 的檔案。

Connect with Open SSH

注意

SFTP 使用者名稱為 storage_account_name.username。 在上述範例中,storage_account_name 是 "contoso4",而 username 是 "contosouser"。合併的使用者名稱會變成 SFTP 命令的 contoso4.contosouser

注意

系統可能會提示您信任主機金鑰。 有效的主機金鑰會在這裡發佈。

傳送完成之後,您可以在 Azure 入口網站中檢視及管理檔案。

Uploaded file appears in storage account

注意

Azure 入口網站使用 Blob REST API 和 Data Lake Storage Gen2 REST API。 能夠在 Azure 入口網站中與上傳的檔案互動,顯示 SFTP 與 REST 之間的互通性運作正常。

請參閱 SFTP 用戶端的文件,以取得如何連線和傳送檔案的指引。

使用自訂網域連線

使用自訂網域時,連接字串為 myaccount.myuser@customdomain.com。 如果未針對使用者指定主目錄,則為 myaccount.mycontainer.myuser@customdomain.com

重要

請確定您的 DNS 提供者不會通過 Proxy 處理要求。 通過 Proxy 處理可能會導致連線嘗試逾時。

使用私人端點連線

使用私人端點時,連接字串為 myaccount.myuser@myaccount.privatelink.blob.core.windows.net。 如果未針對使用者指定主目錄,則為 myaccount.mycontainer.myuser@myaccount.privatelink.blob.core.windows.net

注意

請確定您將網路設定變更為 [從選取的虛擬網路和 IP 位址啟用],並選取您的私人端點,否則一般 SFTP 端點仍可公開存取。

網路考量

SFTP 是平台層級服務,因此即使停用帳戶選項,仍會開啟連接埠 22。 如果未設定 SFTP 存取權,則所有要求都會與服務中斷連線。 使用 SFTP 時,您可以藉由設定防火牆、虛擬網路或私人端點來限制公用存取。 這些設定會在應用程式層強制執行,這表示這些不是 SFTP 特有的設定,而且會影響對所有 Azure 儲存體端點的連線。 如需防火牆和網路設定的詳細資訊,請參閱設定 Azure 儲存體防火牆及虛擬網路

注意

當您直接針對儲存體帳戶端點執行時,嘗試在通訊協定層上判斷 TLS 支援的稽核工具,可能還會傳回除了必要最低版本以外的 TLS 版本。 如需詳細資訊,請參閱對儲存體帳戶的要求強制執行最低必要版本的傳輸層安全性 (TLS)

另請參閱