背景

SSH認証でGitを使用してリモートリポジトリにプッシュするときGitコマンドはリポジトリへアクセスするために必要な秘密鍵を使用して認証する。

SSH認証には、通常、~/.ssh/id_rsaなどの秘密鍵が使用される。しかし、場合によっては異なる秘密鍵を使用してリポジトリにアクセスしたいことがある。例えば、いつもとは異なるユーザー名でGitリポジトリにアクセスする必要がある場合など。

sshやscpコマンドであれば-iオプションでキーを指定できるがGitコマンドにはsshコマンドの-iオプションに相当するオプションは無い。

方法

設定項目core.sshCommandでgitコマンドから使用するsshコマンドを指定できる。
さらにgitコマンドの-cオプションで設定をそのコマンドだけ一時的に変更できる。
これを使えば以下のようなコマンドでキーを指定したgitコマンドを実行できる。

$ git -c core.sshCommand="ssh -i キーのファイルパス" push origin main

clonefetchなどその他のsshを使用するコマンド全般でも同様。