共用方式為


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

本文說明如何使用 SFTP 用戶端安全地連線到 Azure 儲存體 帳戶的 Blob 記憶體端點。 線上之後,您可以上傳和下載檔案,以及修改檔案和資料夾的訪問控制清單(ACL)。

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

必要條件

  • 啟用 Azure Blob 儲存體的 SFTP 支援。 請參閱 啟用或停用SFTP支援

  • 授權存取SFTP用戶端。 請參閱 授權存取用戶端

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

連線 SFTP 用戶端

您可以使用任何 SFTP 用戶端,安全地連接並傳送檔案。 下列範例顯示使用 Open SSH 的 Windows PowerShell 工作階段。

PS C:\Users\temp> sftp contoso4.contosouser@contoso4.blob.core.windows.net

SFTP 使用者名稱為 storage_account_name.username。 在上述範例中, storage_account_name 是 「contoso4」,而 username 是 「contosouser」。。合併的用戶名稱會變成 「contoso4.contosouser」。。 Blob 服務端點為「contoso4.blob.core.windows.net」。

若要完成連線,您可能需要回應一或多個提示。 例如,如果您使用密碼驗證設定本機用戶,系統會提示您輸入該密碼。 您可能也會提示您信任主機金鑰。 有效的主機金鑰會在這裡發佈。

注意

SFTP 會透過 Blob 儲存端點(blob.core.windows.net)而非 Data Lake Storage 端點(dfs.core.windows.net)運作。 因此,不支援 Data Lake Storage 端點,例如 contoso4.contosouser@contoso4.dfs.core.windows.net 。

使用自訂網域連線

如果您要使用自訂網域連線到 Blob 服務端點,則 連接字串 為 myaccount.myuser@customdomain.com。 如果未為使用者指定主目錄,則 連接字串為 myaccount.mycontainer.myuser@customdomain.com

重要

請確定您的 DNS 提供者不會 Proxy 要求,因為這可能會造成連線嘗試逾時。

若要瞭解如何將自定義網域對應至 Blob 服務端點,請參閱將自定義網域對應至 Azure Blob 儲存體 端點

使用私人端點連線

如果您要使用私人端點連線到 Blob 服務端點,則 連接字串 為 myaccount.myuser@myaccount.privatelink.blob.core.windows.net。 如果未為使用者指定主目錄, 則為 myaccount.mycontainer.myuser@myaccount.privatelink.blob.core.windows.net

注意

請確定您將網路設定變更為 [從選取的虛擬網络和IP位址啟用],然後選取您的私人端點。 否則,Blob 服務端點仍可公開存取。

使用因特網路由進行連線

如果您要使用因特網路由連線到 Blob 服務端點,則 連接字串 為 myaccount.myuser@myaccount-internetrouting.blob.core.windows.net。 如果未為使用者指定主目錄, 則為 myaccount.mycontainer.myuser@myaccount-internetrouting.blob.core.windows.net

傳輸資料

線上之後,您可以上傳和下載檔案。 下列範例會使用使用中開啟 SSH 會話來上傳名為 logfile.txt 的檔案。

sftp> put logfile.txt
Uploading logfile.txt to /mydirectory/logfile.txt
logfile.txt
        100%    19    0.2kb/S    00.00

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

上傳的檔案顯示在記憶體帳戶中的螢幕快照。

注意

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

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

簡歷上傳

Azure Blob 儲存體 SFTP 的可繼續上傳功能現已正式推出。 此功能允許使用者在部分傳輸失敗時從故障點恢復檔案上傳,從而節省時間並減少網路頻寬使用。 Azure Blob 儲存體 SFTP 支援的 SFTP 傳輸模式如下。

  • 寫入:此模式可讓用戶端從特定點將資料新增至現有檔案,以繼續上傳,而無需建立新檔案。
  • 寫入 + 建立:此模式允許用戶端透過新增至現有檔案或建立新檔案(如果不存在)來恢復上傳,從而在檔案最初可能不存在時提供靈活性。
  • 附加:此模式將資料新增至現有檔案的結尾,而不會覆寫其目前內容。 先前,這項功能僅支援公開預覽版中的附加模式,這限制了缺乏附加模式支援的 SFTP 用戶端的上傳恢復。 隨著正式發行,我們現在支援寫入和寫入 + 建立模式,這有利於使用沒有附加模式的 SFTP 用戶端的使用者。

注意

僅支援使用 SFTP 通訊協定建立的 Blob 可繼續上傳。 您無法繼續上傳使用 SFTP 以外的通訊協定 (例如 REST) 建立的現有 Blob。

修改檔案或目錄的 ACL

您可以使用 SFTP 用戶端來修改擁有使用者、擁有群組和 ACL 所有其他使用者的權限等級。 您也可以變更擁有使用者和擁有群組。 若要深入瞭解 SFTP 用戶端的 ACL 支援,請參閱 ACL

注意

擁有者用戶現在也可以修改 Blob 或目錄的擁有群組和許可權,而不需要容器的許可權。 這是在本機使用者 ACL 正式運作階段新增的新功能增強功能。 對於非擁有使用者的任何使用者,仍然需要容器許可權。

修改權限

若要變更擁有使用者、擁有群組或 ACL 所有其他使用者的許可權等級,本機用戶必須具有 Modify Permission 許可權。 請參閱授與容器的權限權

下列範例會將目錄的 ACL 列印至主控台。 然後,它會使用 chmod 命令將 ACL 設定為 777。 每個 7 都是 的 rwx 數值形式(讀取、寫入和執行)。 因此 777 ,授與擁有使用者、擁有群組和所有其他使用者的讀取、寫入和執行許可權。 此範例接著會將更新的 ACL 列印至主控台。 若要深入瞭解 ACL 的數值和簡短形式,請參閱 許可權的簡短表單。

sftp> ls -l
drwxr-x---     1234     5678                0 Mon, 08 Jan 2024 16:53:25 GMT dir1
drwxr-x---        0        0                0 Mon, 16 Oct 2023 12:18:08 GMT dir2
sftp> chmod 777 dir1
Changing mode on /dir1
sftp> ls -l
drwxrwxrwx     1234     5678                0 Mon, 08 Jan 2024 16:54:06 GMT dir1
drwxr-x---        0        0                0 Mon, 16 Oct 2023 12:18:08 GMT dir2

注意

尚不支援新增或修改具名使用者、具名群組和具名安全性主體的 ACL 專案。

變更擁有使用者

若要變更目錄或 Blob 的擁有使用者,本機用戶必須具有 Modify Ownership 許可權。 請參閱授與容器的權限權

下列範例會將目錄的 ACL 列印至主控台。 擁有使用者的識別碼為 0。 這個範例會 chown 使用 命令,將擁有使用者的標識碼設定為, 1234 並將變更列印至主控台。

sftp> ls -l
drwxr-x---        0        0                0 Mon, 08 Jan 2024 16:00:12 GMT dir1
drwxr-x---        0        0                0 Mon, 16 Oct 2023 12:18:08 GMT dir2
sftp> chown 1234 dir1
Changing owner on /dir1
sftp> ls -l
drwxr-x---     1234        0                0 Mon, 08 Jan 2024 16:52:52 GMT dir1
drwxr-x---        0        0                0 Mon, 16 Oct 2023 12:18:08 GMT dir2
sftp>

變更擁有群組

若要變更目錄或 Blob 的擁有群組,本機用戶必須具有 Modify Ownership 許可權。 請參閱授與容器的權限權

下列範例會將目錄的 ACL 列印至主控台。 擁有群組的識別碼為 0。 這個範例會 chgrp 使用 命令,將擁有群組的標識符設定為, 5678 並將變更列印至主控台。

sftp> ls -l
drwxr-x---     1234        0                0 Mon, 08 Jan 2024 16:52:52 GMT dir1
drwxr-x---        0        0                0 Mon, 16 Oct 2023 12:18:08 GMT dir2
sftp> chgrp 5678 dir1
Changing group on /dir1
sftp> ls -l
drwxr-x---     1234     5678                0 Mon, 08 Jan 2024 16:53:25 GMT dir1
drwxr-x---        0        0                0 Mon, 16 Oct 2023 12:18:08 GMT dir2