Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
24
Help us understand the problem. What is going on with this article?
@boushi-bird@github

Circle CI で Github に write access 可能な Deploy key を設定する

More than 1 year has passed since last update.

Github のリポジトリと Circle CI のプロジェクトは作成済みとします。

手順

秘密鍵/公開鍵を生成する

CircleCIで使う場合の注意点としては

  • フォーマットはPEMである必要がある
  • パスフレーズはなしにする必要がある

また、Github の Deploy Key は他のリポジトリやユーザに登録された公開鍵を登録できないためリポジトリ毎に生成する必要があります。

下記コマンドで作成

ssh-keygen -t rsa -b 4096 -m pem -C "CircleCI" -f id_rsa_circleci -N ""

-C はコメントなのでなんでも構わない。公開鍵の末尾に出力されるので中身を確認したとき、わかりやすくするために入れる。
-f は出力するファイル名。相対パス、絶対パスで指定可能。
ファイル名を変えた場合は以降の手順をそのファイル名で読み替えてください。

これで秘密鍵 id_rsa_circleci と公開鍵 id_rsa_circleci.pub が出来上がる

公開鍵をGithubに登録する

  1. https://github.com/(ユーザ or 組織)/(対象リポジトリ)/settings/keys へ行き Add deploy key を押す。
  2. 下記を入力
    • [Title] わかりやすい名前 ※空だと ssh-keygen の -C オプションで指定した内容が入る
    • [Key] 公開鍵 id_rsa_circleci.pub の内容
    • [Allow write access] チェックを入れる
  3. Add key を押す

Allow write access のチェックを入れ忘れたら一回削除して登録し直してください。

秘密鍵を Circle CI に登録する

  1. https://circleci.com/gh/(ユーザ or 組織)/(対象リポジトリ)/edit から SSH Permissions へ行く
  2. Add SSH Key を押す
  3. 下記を入力
    • [Hostname] Github.com
    • [Private Key] 秘密鍵 id_rsa_circleci の内容
  4. Add SSH Key を押す

これで登録完了。

自動生成された 鍵を削除する

Readonlyの鍵が使われてしまうので削除する

  1. https://circleci.com/gh/(ユーザ or 組織)/(対象リポジトリ)/edit から Checkout SSH Permissions へ行く
  2. 登録済みの鍵を Remove する

以上です。

Github側に自動登録されたReadonlyの鍵も一応消しておいたほうが良いでしょう。

この記事を書いたきっかけ

「秘密鍵を Circle CI に登録する」の際に何故か登録できない現象に遭遇したためです。

2019-06-22 追記:
エラーメッセージがブラウザ上に表示されるようになり、少しだけわかりやすくなりました。
現象としては Add SSH Key ボタンを押すと Failed とだけ出る。
開発者ツールで見ると {"message":"it looks like private key is invalid key. Double check"} というエラーが。

現象としてはAdd SSH Key ボタンを押すと下記のメッセージが出ます。
It looks like this private key is invalid. Please check if you have pasted the right key. If you are sure your key is valid, please contact support for assistance.

によると PEM 形式である必要があるとのこと
ssh-keygen は -mオプション指定なしだとデフォルトでRFC4716形式になるそうです。

公式ドキュメントにも PEM で作れとありました。
https://circleci.com/docs/2.0/add-ssh-key/

同じエラーで嵌った人の役に立てれば

24
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
24
Help us understand the problem. What is going on with this article?