GitHubで複数アカウントを使う場合のSSH configファイルの設定
※当サイトにはプロモーションが含まれています。
公開日:
更新日:
GitHubにsshでアクセスする場合、使用する鍵ファイルをsshのconfigファイルに指定していると思います。GitHubの仕様上、複数のアカウントを使うと必然的にSSHの鍵もそれぞれ用意することになるわけですが、そうなると github.com という1つのホスト(というかドメイン)に対して複数の設定が必要になります。この設定方法についてのメモです。
これはGitHubに限った話ではなく、任意のホストに対して複数のssh鍵(やその他の設定)を使い分けることができます。
以下の状況を仮定します
アクセスするホスト(またはドメイン)
- github.com
設定するアカウントとそれぞれの鍵ファイルへのパス
- foo アカウント
- ~/.ssh/github_foo_rsa
- hoge アカウント
- ~/.ssh/github_hoge_rsa
.git/config の設定
[remote “xxx”] 内のurlに sshでの接続文字列を指定するわけですが、実際にアクセスしたいホスト名ではなくダミーのホスト名を指定します。
fooが使用するGitリポジトリ内の .git/config
...(省略)...
[remote "origin"]
url = git@foo.github.com:foo/レポジトリ名.git
fetch = +refs/heads/*:refs/remotes/origin/*
...(省略)...
hogeが使用するGitリポジトリ内の .git/config
...(省略)...
[remote "origin"]
url = git@hoge.github.com:hoge/レポジトリ名.git
fetch = +refs/heads/*:refs/remotes/origin/*
...(省略)...
~/.ssh/config の設定
Hostには .git/config で指定したダミーのホスト名を指定し、HostNameに実際のホスト名(or ドメイン名)を指定します。sshは指定したホスト名を config ファイルの記述に従って実際のホスト名に変換してアクセスしてくれます。
Host foo.github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_foo_rsa
Host hoge.github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_hoge_rsa 