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 서버에 대해 연결된 서비스 유형이 잘못 사용되었을 수 있습니다(예: SFTP(보안 FTP) 연결된 서비스를 사용하여 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 서버에서 temp 파일의 이름 바꾸기를 지원하지 않습니다.
권장 사항: 복사 싱크에서 "useTempFileRename"을 false로 설정하여 temp 파일로의 업로드를 비활성화합니다.
오류 코드: SftpInvalidSftpCredential
메시지:
Invalid SFTP credential provided for '%type;' authentication type.
원인: 프라이빗 키 콘텐츠를 Azure Key Vault 또는 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 변환 도구를 사용합니다. Microsoft는 Encode to Base64 format 도구를 추천합니다.
원인: 잘못된 키 콘텐츠 형식이 선택되었습니다.
권장 사항:
PKCS#8 형식 SSH 프라이빗 키(“-----BEGIN ENCRYPTED PRIVATE KEY-----”로 시작)는 현재 SFTP 서버에 액세스하는 용도로 지원되지 않습니다.
키를 “-----BEGIN RSA PRIVATE KEY-----”로 시작하는 기존 SSH 키 형식으로 변환하려면 다음 명령을 실행합니다.
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;'.
원인: 오류 메시지에 “Socket read operation has timed out after 30,000 milliseconds”라는 문자열이 포함된 경우 SFTP 서버에 대해 올바르지 않은 연결된 서비스 유형이 사용된 것이 한 가지 가능한 원인일 수 있습니다. 예를 들어, SFTP 서버에 연결하는 데 FTP 연결된 서비스를 사용하고 있을 수 있습니다.
권장 사항: 대상 서버의 포트를 확인합니다. 기본적으로 SFTP는 포트 22를 사용합니다.
원인: 오류 메시지에 "서버 응답에 SSH 프로토콜 식별이 포함되어 있지 않음" 문자열이 포함된 경우 한 가지 가능한 원인은 SFTP 서버가 연결을 제한한 것입니다. SFTP 서버에서 병렬로 다운로드하기 위해 여러 연결이 만들어지고 SFTP 서버 제한이 발생하는 경우도 있습니다. 보통은 서버마다 제한이 발생한 경우 표시되는 오류가 서로 다릅니다.
권장 사항:
SFTP 데이터 세트의 최대 동시 연결 수를 1로 지정하고 복사 작업을 다시 실행합니다. 작업이 성공하면 제한이 문제였음을 확인할 수 있습니다.
낮은 처리량을 승격하려면 SFTP 관리자에게 문의하여 동시 연결 수 제한을 늘리거나 다음 작업 중 하나를 수행할 수 있습니다.
- 자체 호스팅 IR을 사용하는 경우 허용 목록에 자체 호스팅 IR 컴퓨터의 IP를 추가합니다.
- Azure IR을 사용하는 경우 Azure Integration Runtime IP 주소를 추가합니다. SFTP 서버 허용 목록에 IP 범위를 추가하지 않으려면 자체 호스팅 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 서버는 인증을 위해 "키보드 대화형"이 필요하지만 "암호"를 제공했습니다.
권장 사항:
"키보드 대화형"은 "암호"와 다른 특수 인증 방법입니다. 즉, 서버에 로그인할 때 암호를 수동으로 입력해야 하며 이전에 저장된 암호를 사용할 수 없습니다. 그러나 ADF(Azure Data Factory)는 예약된 데이터 전송 서비스이며 런타임에 암호를 제공할 수 있는 팝업 입력 상자가 없습니다.
절충안으로 실제 수동 입력 대신 백그라운드에서 입력을 시뮬레이션하는 옵션이 제공됩니다. 이 방식은 "키보드 대화형"을 "암호"로 변경할 때와 같은 결과를 나타냅니다. 이 보안 문제를 수락할 수 있는 경우 아래 단계에 따라 사용하도록 설정합니다.
- ADF 포털에서 SFTP 연결된 서비스를 마우스로 가리키고 코드 단추를 선택하여 해당 페이로드를 엽니다.
- typeProperties 섹션에서
"allowKeyboardInteractiveAuth": true
를 추가합니다.
SFTP에서 제공하는 주요 교환 알고리즘으로 인해 SFTP에 연결할 수 없음은 ADF에서 지원되지 않습니다.
증상: ADF를 통해 SFTP에 연결할 수 없으며 다음 오류 메시지를 충족할 수 없습니다.
Failed to negotiate key exchange algorithm.
원인: SFTP 서버에서 제공하는 주요 교환 알고리즘은 ADF에서 지원되지 않습니다. 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 Storage)에 로드하고 다른 복사 작업에서 압축을 풉니다.
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 상태 코드에 대한 자세한 정보는 이 문서를 참조하세요.
관련 콘텐츠
자세한 문제 해결 도움말은 다음 리소스를 참조하세요.