SFTP Connector のトラブルシューティング - Mule 4

SFTP 用 Anypoint Connector (SFTP Connector) をトラブルシューティングするには、接続、権限、サーバー側の問題のトラブルシューティング、Mule アプリケーションの問題のトラブルシューティング、一般的にスローされるメッセージの解釈、ID ファイル形式の問題のトラブルシューティングに関する情報について理解しておいてください。

接続、権限、サーバー側の問題のトラブルシューティング

場合によって、SFTP サーバーへの接続を試みているときに、SFTP サーバーで設定済みの暗号化された通信チャネルが必要であるために接続の確立で問題が発生することがあります。 たとえば、特定の暗号化の暗号や鍵交換アルゴリズムを有効にするか、特定の認証鍵の場所を指定する必要があることもあります。

この問題を解決する手順は、次のとおりです。

  1. SFTP サーバー設定ファイルを見つけ、接続、暗号化方法、タイムアウトなどに関するパラメーターや設定を確認します。必要に応じて設定を修正し、ニーズに合わせて環境をカスタマイズします。 たとえば、OpenSSH を使用している場合は ​sshd_config​ ファイルにアクセスできます。

  2. 設定ファイルを使用して、サーバー側のログレベルを引き上げます。

Mule アプリケーションの問題のトラブルシューティング

場合によって、アプリケーションが失敗している理由がわからず、アプリケーションの SFTP サーバーとのやりとりで何が行われているかについて理解を深める必要があることがあります。

このエラーを解決する手順は、次のとおりです。

  • 設定ファイルを使用して、サーバー側のログレベルを引き上げます。

  • たとえば Cyberduck や Filezilla などの SFTP クライアントを使用して、問題の再現を試みます。これらのクライアントを使用した場合でも問題が発生する場合は、問題が Mule アプリケーションには関連していない可能性が高くなります。

  • SFTP Connector および Apache Mina ライブラリの冗長ログを有効にして、Mule アプリケーション側に関するより分かりやすく詳細なログを取得します。

    1. Anypoint Studio にアクセスし、​[Package Explorer]​ ビューに移動します。

    2. アプリケーションのプロジェクト名を開きます。

    3. src/main/resources​ パスフォルダーを開きます。

    4. フォルダー内の ​log4j2.xml​ ファイルを開きます。

    5. 次の行がすでに ​log4j2.xml​ ファイル内にある場合は、そのコメントを解除して有効にします。それ以外の場合、次の行を追加します。

          <AsyncLogger name=“org.mule.extension.sftp” level=“TRACE”/>
          <AsyncLogger name=“org.apache.sshd” level=“DEBUG”/>
      xml
    6. 次の引数を追加して設定を実行します。

      ​`-M-Djavax.net.debug=ssl,handshake`
    7. 相関 ID を子スレッドに確実に渡して SSH ログに表示するには、次の引数を実行設定に含めます。

      ​`-Dlog4j2.isThreadContextMapInheritable=true`
  • アプリケーションを可能な限り単純にして問題がアプリケーションと SFTP サーバー間のやりとりに関係しているかどうかを判断できるように、不要な DataWeave データ変換は最小限に抑えるか削除してみてください (ハードコードされたデータを使用することもできます)。

Mule アプリケーションで SDK コンポーネントの冗長ログを有効にする方法についての詳細は、​「SDK コンポーネントおよび操作のトラブルシューティング」​ドキュメントを参照してください。

一般的なスローを理解する

スローされる一般的なメッセージのリストとその解釈方法を次に示します。

  • SFTP:ILLEGAL_PATH

    指定されたパスが無効です (存在しないなど)。
  • SFTP:FILE_ALREADY_EXISTS

    既存のファイルと同じ場所、同じ名前でファイルを作成しようとしました。
    この問題は、たとえば ​CREATE_NEW​ 書き込みモードを使用してすでに存在しているファイルのパスにファイルを書き込もうとした場合に発生します。
  • SFTP:ACCESS_DENIED

    SFTP サーバーパスにアクセスしてユーザーが権限を付与されていないアクションを実行しようとする操作が試行されました。
  • SFTP:FILE_LOCK

    ファイルに対するロックを取得しようとする操作が試行されましたが失敗しました。
  • SFTP:ILLEGAL_CONTENT

    ​*Write*​ 操作で書き込み対象として無効なコンテンツを受信しました。
  • SFTP:CONNECTIVITY

    SFTP サーバーへの接続が中断されました。
  • SFTP:INVALID_CREDENTIALS

    無効なログイン情報が原因で SFTP サーバーに対する認証に失敗しました。
  • SFTP:CONNECTION_TIMEOUT

    SFTP サーバーへの接続試行がタイムアウトになりました。
  • SFTP:CANNOT_REACH

    指定された SFTP サーバーホストおよびポートへの接続を確立しようとしていてエラーが発生しました。通常、たとえばリモートアドレスまたはポートでリスンしているプロセスが存在しない場合、接続はリモートで拒否されます。
  • SFTP:UNKNOWN_HOST

    Mule ではホストの IP アドレスを判断できません。
  • SFTP:DISCONNECTED

    アプリケーションでサーバーへのログイン試行の失敗回数が多すぎます。この問題の原因は複数考えられますが、最も一般的な原因は無効なログイン情報です。
  • SFTP:KEY_EXCHANGE_FAILED

    アプリケーションはサーバーへの SSH 接続の確立を試みましたが、鍵交換ステップで失敗しました。ネゴシエーション中、または鍵交換の後半のステップでエラーが発生する場合があります。
  • FILE_DOESNT_EXIST

    The file to write was deleted. (書き込むファイルが削除されています。)

PPK ID ファイルを使用した SFTP Connector の問題のトラブルシューティング

SFTP Connector バージョン 2.0.0 以降を使用していて、優先する認証方法を ​PUBLIC_KEY​ に設定すると、​ID​ ファイルが PPK の場合、問題が発生する可能性があります。​Apache Mina ライブラリ​では PPK ファイル形式がサポートされないため、アプリケーションが失敗します。

この問題を解決する手順は、次のとおりです。

  1. PuTTYgen​ を使用して、PPK ​ID​ ファイルを PEM に変換します。

  2. PEM ファイルを使用するように設定ファイルを更新します。

        <sftp:config name="SFTP_Config" doc:name="SFTP Config" doc:id="34cf9b32-d3de-4171-b6e9-36dc0b25e7c0">
          <sftp:connection host="${host}" username="${user}" identityFile="${app.home}/${file-pem}" passphrase="${pwd}" port="${port}" workingDir="${root-folder}" preferredAuthenticationMethods="#[['PUBLIC_KEY']]">
          </sftp:connection>
        </sftp:config>
    xml