Share via


使用 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」。

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

使用自訂網域連線

如果您要使用自訂網域連線到 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 服務端點仍可公開存取。

傳輸資料

線上之後,您可以上傳和下載檔案。 下列範例會使用使用中開啟 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 Gen2 REST API。 能夠在 Azure 入口網站中與上傳的檔案互動,顯示 SFTP 與 REST 之間的互通性運作正常。

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

修改檔案或目錄的 ACL

您可以使用 SFTP 用戶端來修改擁有使用者、擁有群組和 ACL 所有其他使用者的權限等級。 您也可以變更擁有使用者和擁有群組的識別碼。 若要深入瞭解 SFTP 用戶端的 ACL 支援,請參閱 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