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/keys/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に登録されるのは↑とペアの公開鍵ref.
新しいプロジェクトを追加するとき、CircleCI ではプロジェクトの Web ベース VCS (GitHub または Bitbucket) に対するデプロイ キーを作成します。 デプロイ キーは、リポジトリ固有の SSH 鍵です。 VCS として GitHub を使用している場合、GitHub に公開鍵を持たせ、CircleCI に秘密鍵を格納します。
GitにPushするには
ビルドからリポジトリにプッシュするには、書き込みアクセス権のあるデプロイ キー (ユーザー キー) が必要です。 ユーザー キーの作成手順は、VCS によって異なります
GitHubでは、書き込みアクセス権のあるキーはPersonal access tokenで作成できる。
↑で発行されたキー(秘密鍵になる)をCircleCIに登録する。
CircleCIの鍵を登録する場所は、SSH KeysのAdditional SSH KeysやEnvironment Variables。
複数のリポジトリにPushする場合などに、手動でデプロイキーを作成する方法は以下を参照。
https://circleci.com/docs/ja/2.0/gh-bb-integration/#%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4-%E3%82%AD%E3%83%BC%E3%81%A8%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC-%E3%82%AD%E3%83%BC
複数のリポジトリにPushする場合などに、手動でデプロイキーを作成する方法は以下を参照。
https://circleci.com/docs/ja/2.0/gh-bb-integration/#%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4-%E3%82%AD%E3%83%BC%E3%81%A8%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC-%E3%82%AD%E3%83%BC

CircleCIGitHubリポジトリ以下のファイルを作成したと仮定して進める。
公開鍵 id_rsa.example.pubをauthrized_keyへ追加する。
$ cat ~/.ssh/id_rsa.example.pub >> ~/.ssh/authorized_keys
秘密鍵をProjectのSSH > Additional SSH Keysに追加する。