CircleCIが持つのは秘密鍵。
ref. https://circleci.com/docs/ja/github-integration/#user-keys-and-deploy-keys
Checkout SSH KeysDeploy Key:リポジトリ固有の秘密鍵(デフォルトはリードオンリー でチェックアウトに使用される)GitHub対象リポジトリ > Settings > Deploy KeysにCircleCIの名前で登録 例)
https://github.com/{{user}}/{{repository}}/settings/keysUser Key:ユーザーのすべてのリポジトリにアクセスできる秘密鍵Settings > SSH keys https://github.com/settings/keysAdditional SSH KeysSet 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