分享方式:


針對 Azure Data Factory 和 Azure Synapse 中的 FTP、SFTP 和 HTTP 連接器進行疑難排解

適用於:Azure Data Factory Azure Synapse Analytics

提示

試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用

本文提供針對 Azure Data Factory 和 Azure Synapse 中 FTP、SFTP 和 HTTP 連接器常見問題進行疑難排解的建議。

FTP

錯誤碼:FtpFailedToConnectToFtpServer

  • 訊息Failed to connect to FTP server. Please make sure the provided server information is correct, and try again.

  • 原因:FTP 伺服器可能使用不正確的連結服務類型,例如使用安全 FTP (SFTP) 連結服務來連線到 FTP 伺服器。

  • 建議:檢查目標伺服器的連接埠。 FTP 使用 21 連接埠。

錯誤碼:FtpFailedToReadFtpData

  • 訊息Failed to read data from ftp: The remote server returned an error: 227 Entering Passive Mode (*,*,*,*,*,*).

  • 原因:在資料處理站或 Synapse 管線支援的被動模式下,未開啟介於 1024 到 65535 之間的連接埠範圍來傳輸資料。

  • 建議:檢查目標伺服器的防火牆設定。 開啟連接埠 1024-65535 或 FTP 伺服器中為 SHIR/Azure IR IP 位址指定的連接埠範圍。

SFTP

錯誤碼:SftpOperationFail

  • 訊息Failed to '%operation;'. Check detailed error from SFTP.

  • 原因:SFTP 作業發生問題。

  • 建議:請檢查來自 SFTP 的錯誤詳細資料。

錯誤碼:SftpRenameOperationFail

  • 訊息Failed to rename the temp file. Your SFTP server doesn't support renaming temp file, set "useTempFileRename" as false in copy sink to disable uploading to temp file.

  • 原因:您的 SFTP 伺服器不支援重新命名暫存檔案。

  • 建議:在複製接收中將 "useTempFileRename" 設定為 false,以停用上傳至暫存檔。

錯誤碼:SftpInvalidSftpCredential

  • 訊息Invalid SFTP credential provided for '%type;' authentication type.

  • 原因:私密金鑰內容是從 Azure 金鑰保存庫或 SDK 擷取,但未正確編碼。

  • 建議:

    如果私密金鑰內容來自您的金鑰保存庫,則原始金鑰檔案可在直接上傳至 SFTP 連結服務後運作。

    如需詳細資訊,請參閱使用資料處理站或 Synapse 管線從 SFTP 伺服器複製資料或將資料複製到該處。 私密金鑰內容是 base64 編碼的 SSH 私密金鑰內容。

    使用 base64 編碼來編碼整個原始私密金鑰檔案,並將編碼的字串儲存在您的金鑰保存庫中。 如果您從檔案中選取上傳,原始私密金鑰檔案就是可在 SFTP 連結服務上運作的私密金鑰檔案。

    以下是一些可用來產生字串的範例:

    • 使用 C# 程式碼:

      byte[] keyContentBytes = File.ReadAllBytes(Private Key Path);
      string keyContent = Convert.ToBase64String(keyContentBytes, Base64FormattingOptions.None);
      
    • 使用 Python 程式碼:

      import base64
      rfd = open(r'{Private Key Path}', 'rb')
      keyContent = rfd.read()
      rfd.close()
      print base64.b64encode(Key Content)
      
    • 使用協力廠商 base64 轉換工具。 我們建議使用編碼為 Base64 格式工具。

  • 原因:選擇錯誤的金鑰內容格式。

  • 建議:

    PKCS#8 格式 SSH 私密金鑰 (開頭為 "-----BEGIN ENCRYPTED PRIVATE KEY-----") 目前不支援存取 SFTP 伺服器。

    若要將金鑰轉換成傳統的 SSH 金鑰格式 (開頭為 -----BEGIN RSA PRIVATE KEY-----),請執行下列命令:

    openssl pkcs8 -in pkcs8_format_key_file -out traditional_format_key_file
    chmod 600 traditional_format_key_file
    ssh-keygen -f traditional_format_key_file -p
    
  • 原因:認證或私密金鑰內容無效。

  • 建議:若要查看金鑰檔案或密碼是否正確,請按兩下 WinSCP 之類的工具。

SFTP 複製活動失敗

  • 徵兆:

    • 錯誤碼:UserErrorInvalidColumnMappingColumnNotFound
    • 錯誤訊息:Column 'AccMngr' specified in column mapping cannot be found in source data.
  • 原因:來源未包含名為 "AccMngr" 的資料行。

  • 解決方案:若要判斷 "AccMngr" 資料行是否存在,請透過對應目的地資料集資料行來再次檢查您的資料集設定。

錯誤碼:SftpFailedToConnectToSftpServer

  • 訊息Failed to connect to SFTP server '%server;'.

  • 原因:如果錯誤訊息包含「通訊端讀取作業已在 30,000 毫秒後逾時」字串,其中一個可能的原因是 SFTP 伺服器使用不正確的連結服務類型。 例如,您可能使用 FTP 連結服務來連線到 SFTP 伺服器。

  • 建議:檢查目標伺服器的連接埠。 根據預設,SFTP 會使用連接埠 22。

  • 原因:如果錯誤訊息包含「伺服器回應不包含 SSH 通訊協定識別」字串,其中一個可能的原因是 SFTP 伺服器已對連線進行節流。 系統會建立多個連線,以平行方式從 SFTP 伺服器進行下載,但有時會遇到 SFTP 伺服器節流。 一般而言,不同的伺服器遇到節流會傳回不同的錯誤。

  • 建議:

    將 SFTP 資料集的並行連線數目上限指定為 1,然後重新執行複製活動。 如果活動成功,您可以確定節流就是原因。

    如果您想要改善低輸送量,請連絡 SFTP 管理員來增加並行連線計數限制,或者您可以執行下列其中一個動作:

    • 如果您使用自我裝載 IR,請將自我裝載 IR 機器的 IP 新增至允許清單。
    • 如果您使用 Azure IR,請新增 Azure Integration Runtime IP 位址。 如果您不想將 IP 範圍新增至 SFTP 伺服器允許清單,請改用自我裝載 IR。

錯誤碼:SftpPermissionDenied

  • 訊息Permission denied to access '%path;'

  • 原因:指定使用者在作業時沒有資料夾或檔案的讀取或寫入權限。

  • 建議:授與使用者讀取或寫入 SFTP 伺服器上資料夾或檔案的權限。

錯誤碼:SftpAuthenticationFailure

  • 訊息Meet authentication failure when connect to Sftp server '%server;' using '%type;' authentication type. Please make sure you are using the correct authentication type and the credential is valid. For more details, see our troubleshooting docs.

  • 原因:指定認證 (您的密碼或私密金鑰) 無效。

  • 建議:檢查您的認證。

  • 原因:指定的驗證類型未受允許或不足以完成 SFTP 伺服器中的驗證。

  • 建議:套用下列選項以使用正確的驗證類型:

    • 如果您的伺服器需要密碼,請使用「基本」。
    • 如果您的伺服器需要私密金鑰,請使用「SSH 公開金鑰驗證」。
    • 如果您的伺服器需要「密碼」和「私密金鑰」,請使用「多重要素驗證」。
  • 原因:您的 SFTP 伺服器需要 "keyboard-interactive" 進行驗證,但您提供了 "password"。

  • 建議:

    "keyboard-interactive" 是一種特殊的驗證方法,與 "password" 不同。 這表示登入伺服器時,您必須手動輸入密碼,而且無法使用先前儲存的密碼。 但是 Azure Data Factory (ADF) 是排定的資料傳輸服務,而且沒有快顯輸入方塊可讓您在執行階段尚提供密碼。

    折衷辦法是提供選項來模擬背景中的輸入,而不是實際的手動輸入,這相當於將 "keyboard-interactive" 變更為 "password"。 如果您可以接受此安全性考量,請遵循下列步驟來將其啟用:

    1. 在 ADF 入口網站上,將滑鼠停留在 SFTP 連結服務上,然後選取程式碼按鈕以開啟其承載。
    2. 在 "typeProperties" 區段中新增 "allowKeyboardInteractiveAuth": true

ADF 不支援 SFTP 所提供的金鑰交換演算法,因此無法連線到 SFTP

  • 徵兆:您無法透過 ADF 連線到 SFTP,並且看到下列錯誤訊息:Failed to negotiate key exchange algorithm.

  • 原因:ADF 不支援 SFTP 伺服器所提供的金鑰交換演算法。 ADF 支援的金鑰交換演算法如下:

    • curve25519-sha256
    • curve25519-sha256@libssh.org
    • ecdh-sha2-nistp256
    • ecdh-sha2-nistp384
    • ecdh-sha2-nistp521
    • diffie-hellman-group-exchange-sha256
    • diffie-hellman-group-exchange-sha1
    • diffie-hellman-group16-sha512
    • diffie-hellman-group14-sha256
    • diffie-hellman-group14-sha1
    • diffie-hellman-group1-sha1

    在 SHIR 上支援上述金鑰交換演算法的最新版本是 5.19 版。

錯誤碼:SftpInvalidHostKeyFingerprint

  • 訊息Host key finger-print validation failed. Expected fingerprint is '<value in linked service>', real finger-print is '<server real value>'

  • 原因:Azure Data Factory 現在支援 SFTP 連接器中更安全的主機金鑰演算法。 針對新增的演算法,其需要取得 SFTP 伺服器中的對應指紋。

    新支援的演算法為:

    • ssh-ed25519
    • ecdsa-sha2-nistp256
    • ecdsa-sha2-nistp384
    • ecdsa-sha2-nistp521
  • 建議:從 SFTP 伺服器的錯誤訊息中,使用 real finger-print 中的主機金鑰名稱取得有效的指紋。 您可以執行命令來取得 SFTP 伺服器上的指紋。 例如:在 Linux 伺服器中執行 ssh-keygen -E md5 -lf <keyFilePath> 以取得指紋。 此命令可能會因不同的伺服器類型而有所不同。

錯誤碼:UnsupportedCompressionTypeWhenDisableChunking

  • 訊息"Disable chunking" is not compatible with "ZipDeflate" decompression.

  • 原因停用區塊化ZipDeflate 解壓縮不相容。

  • 建議:將二進位資料載入暫存區域 (例如:Azure Blob 儲存體),並在另一個複製活動中解壓縮。

HTTP

錯誤碼:HttpFileFailedToRead

  • 訊息Failed to read data from http server. Check the error from http server:%message;

  • 原因:當資料處理站或 Synapse 管線與 HTTP 伺服器通訊,但 HTTP 要求作業失敗時,就會發生此錯誤。

  • 建議:檢查錯誤訊息中的 HTTP 狀態碼,並修正遠端伺服器問題。

錯誤碼:HttpSourceUnsupportedStatusCode

  • 訊息Http source doesn't support HTTP Status Code '%code;'.

  • 原因:當 Azure Data Factory 要求 HTTP 來源,卻收到非預期的狀態碼時,就會發生此錯誤。

  • 建議:如需 HTTP 狀態碼的詳細資訊,請參閱本文件

如需更多疑難排解的協助,請嘗試下列資源: