電気ひつじ牧場

技術メモ

CircleCIのcheckoutステップで失敗する

CircleCIでcheckoutしたらいきなりこんなエラーが出てきた。

error cloning repository: unknown error: ERROR: You're using an RSA key with SHA-1, which is no longer allowed. Please use a newer client or a different key type.

特に前回パスしたビルドから大きく変更していない。何もしてないのに壊れましたとはまさにこのことである。

このエラーの直前の行で次のようなwarningが出力されていた。

Either git or ssh (required by git to clone through SSH) is not installed in the image. Falling back to CircleCI's native git client but the behavior may be different from official git. If this is an issue, please use an image that has official git and ssh installed.
Cloning git repository

「イメージにgitもsshも含まれていないため、CCIに含まれるgitクライアントにフォールバックしたよ。これがまずければビルドで使うイメージにgitクライアントを含めてね」と書いてある。 そのためcheckoutの前でgitをインストールしてみた。

    steps:
      - run: yum install -y git
      - checkout

これでエラーは消えた。

原因と思われるもの

nulab.com

OpenSSH8.8から、SHA1ハッシュを使ったRSA署名が禁止されている

先程のwarning行は以前のパスしたジョブでも出力されていたため、以前からこのジョブではCCIに含まれるネイティブのgitクライアントが使われていた。 最近になって内部で使われるopensshのバージョンが上がり、今回のようなエラーが出たのだと思われる(追記参照)

追記

GitHub側の仕様変更が原因だった説が濃厚。 表にもあるとおり、今日(2022/01/11)で非推奨の鍵を受け付けないようになっている。

github.blog