Treasure Data - Support Engineering Team blog

トレジャーデータのサポートエンジニアリングチームのブログです。

Could not load private key によるジョブの失敗

こんにちは。Treasure Dataサポートチームの小嶋です。
SFTP のインポートあるいはエクスポートジョブにて、Could not load private key ~ というエラーで失敗した場合の原因と確認すべき点を紹介します。

事例

このエラーは公開鍵/秘密鍵で SFTP の認証を行う際、秘密鍵の中身や形式が有効でない場合に返されます。

私の方でエラーを再現してみます。
こちらの手順に則り SFTP の Authentication を作成します。
SFTP Server Export Integration - Integrations - Treasure Data Product Documentation

今回はエラーを再現するため、Secret key file: に適当な文字列を入力します。

そしてクエリを実行し、Result Export を行います。
秘密鍵の中身が正しくないため当然エラーとなり、ログに Could not load private key ~ が表示されていることがわかります。

原因

繰り返しになりますが、こちらのエラーは SFTP と公開鍵/秘密鍵を用いた認証を行う際、秘密鍵の内容あるいは形式が有効でない場合に返されます。

内容についてはファイルの記載ミス(特にコピー&ペーストのミス)やSFTP サーバーの公開鍵に対応していない秘密鍵を使用していることが考えられます。
改めて記載しているものに誤りがないか確認してみてください。

形式については下記のドキュメントに記載のあるように、OpenSSH 7.8 よりデフォルトとなった OpenSSH 形式はサポートされていません。
それ以前のデフォルトフォーマットである PEM 形式である必要があります。
7.8 以降のものを使用する場合は、'-m PEM' コマンドによって PEM 形式に変換してください。
https://docs.treasuredata.com/display/public/INT/SFTP+Server+Import+Integration