CircleCIが持つのは秘密鍵。
ref. https://circleci.com/docs/ja/github-integration/#user-keys-and-deploy-keys
Checkout SSH Keys
Deploy Key
:リポジトリ固有の秘密鍵(デフォルトはリードオンリー でチェックアウトに使用される)GitHub
対象リポジトリ > Settings
> Deploy Keys
にCircleCI
の名前で登録 例)
https://github.com/{{user}}/{{repository}}/settings/keys
User Key
:ユーザーのすべてのリポジトリにアクセスできる秘密鍵Settings
> SSH keys https://github.com/settings/keysAdditional SSH Keys
Set up Project
によってCircleCi
がSSH
キーペアを作成して、CircleCI
に秘密鍵を、GitHub
に公開鍵を自動で保存する。
上記で作成したSSH
キーペアは読み込み専用
(Read-only
)なので、GitHub
からPull
/Checkout
はできるが、Push
はできない。
CircleCI
> Project Settings
> SSH Keys
にDeploy Key
を登録 => CircleCI
に作成されるのは秘密鍵GitHub
対象リポジトリ > Settings
> Deploy Keys
にCircleCI
の名前で登録 => GitHub
に登録されるのは↑とペアの公開鍵User Key
はすべてのリポジトリにアクセスできる(デフォルトはRead-only
)。GitHub
のマシンユーザーを使用することが推奨されている。
CircleCI
> Project Settings
> SSH Keys
にUser Key
を登録 => CircleCI
に作成されるのは秘密鍵GitHub
ユーザーのSettings
> SSH keysに登録 GitHub
に登録されるのは↑とペアの公開鍵[Hostname (ホスト名)] フィールドにキーに関連付けるホスト名を入力します (例: git.heroku.com)。 ホスト名を指定しない場合は、どのホストに対しても同じキーが使われます。
仮にAサーバの秘密鍵
をAdditional SSH Keys
に登録しているとする(Additional SSH Keys
はその他にも秘密鍵
をいくつか登録していると仮定する)。
CircleCIからSSHでAサーバに接続する場合、デフォルトではDeploy Key
やHostname
に合致しないキーもふくめてすべてのAdditional SSH Keys
に登録されているキーが試される。
【要確認】User Key
は試されていないよう。
以下の内容はUser Key
を使えば同じことができる(add_ssh_keys
は必須)が覚書としてAdditional SSH Keys
に登録する方法を記載する。
GitHubに対するAdditional SSH Keys
の登録・使用は以下のとおり。
ローカル
キーペアを作成公開鍵
をGitHubの https://github.com/settings/keys に登録秘密鍵
をAdditinal SSH Keys
にHostname
をgithub.com
で登録add_ssh_keys
でフィンガープリントを指定する(これをしないと権限エラー)- add_ssh_keys:
fingerprints:
- XX:XX.....XX
ssh-add -l
で確認するとDeploy Key
およびAdditional SSH Keys
が登録されている。
【要確認】User Key
は登録されていないよう。
checkout
命令が発行されたときに/home/circleci/.ssh
が作成される。逆に言うとcheckout
命令を発行しなければ/home/circleci/.ssh
は作成されない。
checkout
命令を発行しなくてもssh-agent
にはDeploy Key
およびAdditional SSH Keys
が登録されている。
checkout
命令を発行したときの/home/circleci/.ssh
は以下のとおり。
drwx------ 2 circleci circleci 57 Jan 14 09:51 .
drwxr-xr-x 1 circleci circleci 48 Jan 14 09:51 ..
-rw------- 1 circleci circleci 388 Jan 14 09:51 id_rsa <=== Deploy Key 秘密鍵
-rw-r--r-- 1 circleci circleci 81 Jan 14 09:51 id_rsa.pub <==== Deploy Key 公開鍵
-rw------- 1 circleci circleci 1445 Jan 14 09:51 known_hosts