Gitで秘密鍵を指定してリモートリポジトリを操作する

githubとbitbucketを併用している場合などは、~/.ssh/configにドメインごとにどの鍵を使用するか指定するのが一般的だと思います。しかし、githubをマルチアカウントで運用するような場合は、ドメインが同じなのでこの方法は使えません。

前々から不便だなーと思っていたのですが、設定ファイルに頼らずに、リモートリポジトリを操作するときにどの鍵を使用するか指定できることを知ったので、その方法のメモです。

gitのバージョン確認

今回の方法は、gitのバージョン2.3から使用できるようなので、まずはgitのバージョン確認をします。

$ git --version
git version 2.7.4

どうやら対応しているようです。ちなみに環境はWSLなのでUbuntu 16.04です。

リモートリポジトリ操作時に鍵を指定する

リモートリポジトリを操作するときに鍵を指定するコマンドはこれです。GIT_SSH_COMMANDという環境変数を使います。

$ GIT_SSH_COMMAND='ssh -i 秘密鍵のパス' gitコマンド

例えば、git clone時に鍵を指定する場合はこんな感じになり、

$ GIT_SSH_COMMAND='ssh -i ~/.ssh/id_rsa' git clone リモートリポジトリ

git pushの場合はこんな感じになります。

$ GIT_SSH_COMMAND='ssh -i ~/.ssh/id_rsa' git push origin master

タイプ数は増えるものの自由に鍵を指定できるので、githubとかbitbucketのマルチアカウントの運用もストレスなく使えるようになりました。

参考サイト:

git clone 時に秘密鍵を指定する - Qiita
~~git の支援が弱くて変なやり方しかない。~~ EDIT: ( 以降で `GIT_SSH_COMMA...

コメント