CircleCI 上のリポジトリでは、最初から以下のようなリモート設定がされているようです。
origin  git@github.com:user/repo.git (fetch)
origin  git@github.com:user/repo.git (push)さてこの方法には以下のような方法があります。
- GitHub Personal Access Token を使う (2020-01 追記) 
- ssh を使う 
GitHub Personal Access Token
こっちのほうが楽かもしれない。
準備
まず、GitHub で Personal Access Token を取得します。もし対象のリポジトリがプライベートならrepoにチェック、パブリックならpublic_repoにだけチェックを入れトークンを生成します。
step で push する
git pushを実行するには、 git ユーザーのメールと名前は最低限設定する必要があるのでそれらを設定します。またoriginは上記の通りgit@...となっているのでhttps:スキーマの方にユーザー情報を付け加えたやつに変更します。変更するコマンドは以下です。
git remote set-url origin <新URL>
その後はこのoriginに向かってgit pushするだけです。
steps:
  - ...
  - run:
      name: git push
      command: |
        git config --global user.email "$GIT_AUTHOR_EMAIL"
        git config --global user.name "$GIT_AUTHOR_NAME"
        git remote set-url origin https://$GIT_AUTHOR_NAME:$GITHUB_PERSONAL_ACCESS_TOKEN@github.com//.git
        git push origin master:****  ssh
github.com に ssh できるようにする
対象のプロジェクトの設定の
- SSH Permissions 
- Add SSH Key 
から以下のように「Hostname」にはgithub.comを設定し、「Private Key」には自分がいつも使っている秘密鍵の内容をコピペして追加します。
一覧画面のそのホストの行にフィンガープリントが一緒に置いてあるはずなのでそれをコピーしておきます。
.circleci/config.yaml の編集
ssh時に鍵認証できる必要があるので.ssh/configを編集する必要があります。これにはstepsでadd_ssh_keysを設定しておきます。以下のような感じです。
jobs:
  - checkout
  - add_ssh_keys:
      fingerprints:
        - '**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**'この'**:**:...の部分に先ほどコピーしたフィンガープリントを置きます。これでここを実行した時に~/.ssh/configに以下のような設定が追加されます。
Host github.com
  IdentitiesOnly yes
  IdentityFile /home/circleci/.ssh/id_rsa_********************************step で push する
git pushを実行するには、 git ユーザーのメールと名前は最低限設定する必要があるのでそれらを設定した上でgit pushします。
steps:
  - ...
  - run:
      name: git push
      command: |
        git config --global user.email "$GIT_AUTHOR_EMAIL"
        git config --global user.name "$GIT_AUTHOR_NAME"
        # add とかするならここで
        export GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
        git push origin master:****
