針對 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"。 如果您可以接受此安全性考量,請遵循下列步驟來將其啟用:
- 在 ADF 入口網站上,將滑鼠停留在 SFTP 連結服務上,然後選取程式碼按鈕以開啟其承載。
- 在 "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 狀態碼的詳細資訊,請參閱本文件。
相關內容
如需更多疑難排解的協助,請嘗試下列資源: