Поделиться через


Устранение проблем с соединителями FTP, SFTP и HTTP в Azure Data Factory и Azure Synapse

ОБЛАСТЬ ПРИМЕНЕНИЯ: Фабрика данных Azure Azure Synapse Analytics

Совет

Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !

В этой статье приводятся рекомендации по устранению распространенных проблем с соединителями FTP, SFTP и HTTP в Фабрика данных Azure и Azure Synapse.

FTP

Код ошибки: Не удалось подключиться к FTP-серверу

  • Сообщение.Failed to connect to FTP server. Please make sure the provided server information is correct, and try again.

  • Причина. Для FTP-сервера может использоваться неверный тип связанной службы. Например, для подключения к FTP-серверу может использоваться связанная служба Secure FTP (SFTP).

  • Рекомендация. Проверьте порт целевого сервера. Протокол FTP использует порт 21.

Код ошибки: FtpFailedToReadFtpData

  • Сообщение.Failed to read data from ftp: The remote server returned an error: 227 Entering Passive Mode (*,*,*,*,*,*).

  • Причина. Диапазон портов от 1024 до 65535 не открыт для передачи данных в пассивном режиме, поддерживаемом фабрикой данных или конвейером Synapse.

  • Рекомендация. Проверьте настройки межсетевого экрана целевого сервера. Откройте порт 1024-65535 или диапазон портов, указанный на FTP-сервере, для IP-адресов SHIR/Azure IR.

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 Key Vault или пакета SDK, но кодируется неправильно.

  • Рекомендация.

    Если содержимое закрытого ключа поступило из хранилища ключей, исходный файл ключа может работать при его передаче непосредственно в связанную службу SFTP.

    Дополнительные сведения см. в статье Копирование данных с SFTP-сервера и на него с помощью Фабрики данных или конвейеров Synapse. Содержимое закрытого ключа SSH должно быть в кодировке Base64.

    Закодируйте весь исходный файл закрытого ключа в 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. Мы рекомендуем средство Encode to Base64 format.

  • Причина. Выбран неправильный формат содержимого ключа.

  • Рекомендация.

    Формат закрытого ключа SSH PKCS#8 (начинающийся с -----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", перепроверьте конфигурацию вашего набора данных, сопоставив столбец набора данных назначения.

Код ошибки: Не удалось подключиться к серверу SFTP

  • Сообщение.Failed to connect to SFTP server '%server;'.

  • Причина. Если в сообщении об ошибке есть строка "Истекло время ожидания операции чтения сокета (30 000 миллисекунд)", одна из возможных причин заключается в том, что для SFTP-сервера используется неверный тип связанной службы. Например, для подключения к SFTP-серверу может использоваться связанная служба FTP.

  • Рекомендация. Проверьте порт целевого сервера. По умолчанию для SFTP-подключений используется порт 22.

  • Причина. Если сообщение об ошибке содержит строку "Ответ сервера не содержит идентификацию протокола SSH", одна из возможных причин заключается в том, что сервер SFTP регулирует подключение. Создаются несколько подключений для одновременного скачивания с сервера SFTP, и иногда происходит ограничение скорости сервера SFTP. Обычно различные серверы возвращают разные ошибки при ограничении пропускной способности.

  • Рекомендация.

    Укажите максимальное число одновременных подключений к набору данных SFTP, равное 1, и повторно запустите действие копирования. Если действие выполнится успешно, значит причина в ограничении.

    Если вы хотите повысить низкую пропускную способность, обратитесь к администратору SFTP, чтобы увеличить ограничение числа одновременных подключений или выполнить одно из следующих действий:

    • Если используется локальная среда IR, добавьте IP-адрес ее компьютера в список разрешений.
    • При использовании среды Azure IR добавьте IP-адреса Azure Integration Runtime. Если вы не хотите добавлять диапазон 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.

  • Рекомендация. Чтобы использовать правильный тип проверки подлинности, примените следующие параметры.

    • Если серверу требуется пароль, используйте "Basic".
    • Если серверу требуется закрытый ключ, используйте "проверку подлинности с помощью открытого ключа SSH".
    • Если для сервера требуются "пароль" и "закрытый ключ", используйте "многофакторную проверку подлинности".
  • Причина. Сервер SFTP требует "интерактивную идентификацию на клавиатуре", но вы указали "пароль".

  • Рекомендация.

    "Интерактивная идентификация на клавиатуре" — это специальный метод проверки подлинности, отличный от аутентификации по паролю. Это означает, что при входе на сервер необходимо ввести пароль вручную, и вы не можете использовать ранее сохраненный пароль. Но Фабрика данных Azure (ADF) — это запланированная служба передачи данных, и всплывающее окно ввода не позволяет ввести пароль во время выполнения.

    Есть возможность имитировать ввод данных в фоновом режиме вместо ручного ввода, что эквивалентно изменению параметра "интерактивная идентификация на клавиатуре" на "пароль". Если вы можете принять этот риск безопасности, выполните следующие шаги, чтобы его разрешить:

    1. На портале ADF наведите указатель мыши на связанную службу SFTP и откройте ее содержимое, выбрав кнопку "Код".
    2. В раздел typeProperties добавьте "allowKeyboardInteractiveAuth": true.

Невозможно подключиться к SFTP, так как алгоритмы обмена ключами, предоставляемые SFTP, не поддерживаются в ADF.

  • Симптомы: вы не можете подключиться к SFTP через ADF и выполнить следующее сообщение об ошибке: Failed to negotiate key exchange algorithm.

  • Причина. Алгоритмы обмена ключами, предоставляемые сервером SFTP, не поддерживаются в ADF. В ADF поддерживаются следующие алгоритмы обмена ключами:

    • curve25519-sha256
    • [email protected]
    • ecdh-sha2-nistp256.
    • ecdh-sha2-nistp384
    • ecdh-sha2-nistp521
    • diffie-hellman-group-exchange-sha256;
    • Diffie-Hellman алгоритм обмена группами 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 теперь поддерживает более безопасные алгоритмы ключей узла в соединителе 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>. Команда может варьироваться среди различных типов серверов.

Код ошибки: Тип сжатия не поддерживается при отключенной блочной передаче

  • Сообщение."Disable chunking" is not compatible with "ZipDeflate" decompression.

  • Причина. Отключение фрагментирования несовместимо с zipDeflate декомпрессией.

  • Рекомендация. Загрузите двоичные данные в промежуточную область (например, Хранилище BLOB-объектов Azure) и распакуйте их в другом действии копирования.

HTTP

Код ошибки: HttpFileFailedToRead

  • Сообщение.Failed to read data from http server. Check the error from http server:%message;

  • Причина: Эта ошибка возникает, когда Data Factory или конвейер Synapse обращается к HTTP-серверу, но операция HTTP-запроса завершается неудачно.

  • Рекомендация. Проверьте код состояния HTTP в сообщении об ошибке и устраните проблему с удаленным сервером.

Код ошибки: HttpSourceUnsupportedStatusCode

  • Сообщение.Http source doesn't support HTTP Status Code '%code;'.

  • Причина: эта ошибка возникает, когда Фабрика данных Azure запрашивает источник HTTP, но получает непредвиденный код состояния.

  • Рекомендация. Подробнее о коде состояния HTTP см. в этом документе.

Для получения дополнительных сведений об устранении неполадок воспользуйтесь следующими ресурсами: