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に登録する
-
https://github.com/(ユーザ or 組織)/(対象リポジトリ)/settings/keys
へ行きAdd deploy key
を押す。 - 下記を入力
- [Title] わかりやすい名前 ※空だと ssh-keygen の
-C
オプションで指定した内容が入る - [Key] 公開鍵
id_rsa_circleci.pub
の内容 - [Allow write access] チェックを入れる
-
Add key
を押す
Allow write access
のチェックを入れ忘れたら一回削除して登録し直してください。
秘密鍵を Circle CI に登録する
-
https://circleci.com/gh/(ユーザ or 組織)/(対象リポジトリ)/edit
からSSH Permissions
へ行く -
Add SSH Key
を押す - 下記を入力
- [Hostname] Github.com
- [Private Key] 秘密鍵
id_rsa_circleci
の内容
-
Add SSH Key
を押す
これで登録完了。
自動生成された 鍵を削除する
Readonlyの鍵が使われてしまうので削除する
-
https://circleci.com/gh/(ユーザ or 組織)/(対象リポジトリ)/edit
からCheckout SSH Permissions
へ行く - 登録済みの鍵を 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/
同じエラーで嵌った人の役に立てれば