GitHubで複数アカウントを使う場合のSSH configファイルの設定

OpenSSH

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
Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*