gitでSSH接続する際、デフォルトでは ~/.ssh/id_rsa
が使用されますが、これとは別のSSH鍵を使う方法を紹介します。
~/.ssh/configを使う方法
~/.ssh/config
に以下の様な設定を書きます。
Host github.com
HostName github.com
IdentityFile ~/.ssh/id_rsa_github
Host bitbucket.org
HostName bitbucket.org
IdentityFile ~/.ssh/id_rsa_bitbucket
この様に書くとリモートリポジトリがGitHubの場合には ~/.ssh/id_rsa_github
を、bitbucketの場合は ~/.ssh/id_rsa_bitbucket
が使われます。
Gitだけ普段とは別のSSHキーを使いたい場合や、リモートサーバごとに鍵を使い分けたい場合にはこの方法が便利です。
core.sshCommand
設定を使う方法
Gitリポジトリごとに異なるSSHキーを使う場合には以下の方法が便利です。
以下のワンライナーコマンドで、指定したSSH鍵を使ってクローンし、さらにそれ以降もその鍵を使うように .git/config
に設定を保存してくれます。
git clone -c "core.sshCommand=ssh -i ~/.ssh/id_rsa_example -F /dev/null" git@github.com:example/example.git
既に存在しているリポジトリで、使用するSSH鍵を指定するには以下のようにします。
git config core.sshCommand "ssh -i ~/.ssh/id_rsa_example -F /dev/null"
GIT_SSH_COMMAND
環境変数を使う方法
以下のように GIT_SSH_COMMAND
という環境変数を使ってSSH鍵を指定することも可能です。
export GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa_example -F /dev/null"
git clone git@github.com:example/example.git
これは上で紹介した core.sshCommand
が使えないケース( .git/config
を汚したくない場合など)で、その場かぎりの鍵を使うケースなどで使えそうです。