本文提供有关排查数据工厂和 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 连接时,该文件有效。
私钥内容是 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 管理员联系以增加并发连接计数限制,或者
- 如果使用的是本地数据网关 (OPDG),请将 OPDG 计算机的 IP 添加到允许列表。
错误代码: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 服务器中完成身份验证。
建议:目前仅支持基本身份验证类型
由于数据工厂不支持 SFTP 提供的密钥交换算法,无法连接到 SFTP
症状:无法通过数据工厂连接到 SFTP,并收到以下错误消息:
Failed to negotiate key exchange algorithm.
原因:数据工厂不支持 SFTP 服务器提供的密钥交换算法。 数据工厂支持的密钥交换算法包括:
- 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
错误代码:SftpInvalidHostKeyFingerprint
消息:
Host key finger-print validation failed. Expected fingerprint is '<value in connection type>', real finger-print is '<server real value>'
原因:数据工厂现在支持 SFTP 连接器中更安全的主机密钥算法。 对于新添加的算法,需要在 SFTP 服务器中获取相应的指纹。
新增的支持算法包括:
- ssh-ed25519
- ecdsa-sha2-nistp256
- ecdsa-sha2-nistp384
- ecdsa-sha2-nistp521
建议:使用
real finger-print
中的主机键名从 SFTP 服务器的错误消息中获取有效指纹。 可以运行该命令获取 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;'.
原因:当数据工厂请求 HTTP 源但收到意外的状态代码时,会发生此错误。
建议:有关 HTTP 状态代码的详细信息,请参阅此文档。
相关内容
尝试通过以下资源获得故障排除方面的更多帮助: