会社用とプライベート用など、複数のGithubアカウントを使い分ける際の設定方法をまとめました。
ssh鍵を作成する
まず、ssh接続に使用する鍵をローカル環境で作成します。使用したいアカウント毎に、以下のコマンドで鍵ペアを作成します。
cd ~/.ssh
ssh-keygen -t rsa -C {Githubメールアドレス} -f {作成する鍵の名前}
パスフレーズを設定する為、任意の文字列を2回入力します。
実行後、秘密鍵(ファイル名)と公開鍵(ファイル名.pub)が作成されます。
ssh設定ファイル(~/.ssh/config)の編集
アカウント毎にssh鍵を使い分ける為、ローカル環境のssh設定ファイルにHost(接続元)の登録を行います。
ssh設定ファイル~/.ssh/config
を以下の通り書き換えます(存在しない場合は作成)。
今回はmainとsubでアカウントを切り替える為、2つのHostを登録します。
項目IdentityFile
に、それぞれのアカウントで使用する秘密鍵のパスを指定します。
Host github.com.main # メインアカウント
HostName github.com
User git
Port 22
IdentityFile ~/.ssh/id_rsa_main # メインアカウント用の鍵
TCPKeepAlive yes
IdentitiesOnly yes
Host github.com.sub # サブアカウント
HostName github.com
User git
Port 22
IdentityFile ~/.ssh/id_rsa_sub # サブアカウント用の鍵
TCPKeepAlive yes
IdentitiesOnly yes
Githubに公開鍵を登録する
作成した公開鍵をGithubに登録します。
Githubにログインして、[Settings] -> [SSH keys] -> [Add SSH key]で作成した公開鍵を登録します。(詳細はこちらを参照)
ssh接続確認
ssh設定ファイルに登録したHostで、正しくssh接続ができることを確認します。
ssh -T git@github.com.main
ssh -T git@github.com.sub
秘密鍵のパスフレーズを聞かれるので、正しく入力すると以下のメッセージが返ってきます。
Hi {yourname}! You've successfully authenticated, but GitHub does not provide shell access.
cloneする
リポジトリをcloneをする際には、ssh設定ファイルに登録したHostを指定します。
# (メインアカウントを使う場合:)
git clone git@github.com.main:username/repository-name.git
git remote add origin git@github.com.main:username/repository-name.git
以下のコマンドでgitのurlが正しく設定されているか確認します。
git config remote.origin.url
git@github.com.xxx:~
のxxxの部分が~/.ssh/config
に設定したHost名になっていればOKです。今後gitコマンドではHostで設定したssh鍵が使用されます。
git設定ファイル(gitconfig)の設定
ここまでsshの鍵を設定しましたが、gitのユーザー名も設定する必要があります。以下を設定します。
普段使う名前は、以下のコマンドでglobalに設定しておきます。
(~/.gitconfig
を直接編集してもOK)
git config --global user.name {ユーザー名}
git config --global user.email {メールアドレス}
リポジトリ毎ににユーザ名を切り替える場合、以下を実行します。
({リポジトリのパス}/.git/config
を直接編集してもOK)
cd {リポジトリ名}
git config --local user.name {ユーザー名}
git config --local user.email {メールアドレス}