複数のGitHubアカウントをSSHで使い分けるための設定
個人用、会社用などGitHubアカウントを複数使い分ける際の設定方法を、備忘録を兼ねてまとめました。
SSH鍵の作成
まずはメインのSSH鍵を作成します。main@example.com
にはGitHubのメインアカウントのメールアドレスを入れてください。id_rsa
は鍵の名前です。任意なので id_main_rsa
などの名前でもOK。
cd ~/.ssh
ssh-keygen -t rsa -C main@example.com -f id_rsa
Enter passphrase (empty for no passphrase):
と表示されたら Enter。
Enter same passphrase again:
と表示されたらもう一度 Enter。これでSSH鍵が作成されました。
~/.ssh
に id_rsa
と id_rsa.pug
が作成されていることを確認しましょう。
ls
同じように、次はサブアカウント用のSSH鍵を作ります。
ssh-keygen -t rsa -C sub@example.com -f id_sub_rsa
同じように作成したら、~/.ssh
に id_sub_rsa
と id_sub_rsa.pub
が作成されていることを確認しましょう。
SSHの設定(~/.ssh/config)
~/.ssh/config
ファイルを開き(なければ作成し)、以下のように編集します。
#メインアカウント
Host github.com #任意のホスト名
HostName github.com
IdentityFile ~/.ssh/id_rsa #メインアカウントの鍵
User git
TCPKeepAlive yes
IdentitiesOnly yes
#サブアカウント
Host github.com.sub #任意のホスト名
HostName github.com
IdentityFile ~/.ssh/id_sub_rsa #サブアカウントの鍵
User git
TCPKeepAlive yes
IdentitiesOnly yes
TCPKeepAlive yes
はSSH接続を維持するための記述、IdentitiesOnly
は指定した秘密鍵のみを使用するための記述のようです。僕はあまり詳しくないのですが、 おまじないとして入れてあります。
GitHubに公開鍵を登録
まずはメインアカウントの設定から。GitHubにメインアカウントでログインします。
↓のGitHubのプロフィールページのSSH and GPG keys
→ `New SSH key' ボタンをクリック。
Title は任意、Keyには id_rsa.pub
の中身のテキストをまるごとコピーして貼り付けます。
以下のコマンドで中身をコピーすることができます。
pbcopy < ~/.ssh/id_rsa.pub
貼り付けたら Add SSH Key
ボタンををクリックして完了します。
同じように、GitHubにサブアカウントでログインし、サブアカウント側も同じように設定します。
サブの公開鍵の中身をコピーする時はこんな感じ↓
pbcopy < ~/.ssh/id_sub_rsa.pub
SSH接続テスト
まずはメインアカウントの接続テスト。 ~/.ssh/config
で設定したメインのホスト名を指定します。
ssh -T github.com
ターミナルに下のようなメッセージが表示されたらOK!
Hi [メインのユーザー名]! You've successfully authenticated, but GitHub does not provide shell access.
お次はサブアカウントの接続テスト。~/.ssh/config
で設定したサブのホスト名を指定します。
ssh -T github.com.sub
今度はサブのユーザー名で表示されていればOK。
Hi [サブのユーザー名]! You've successfully authenticated, but GitHub does not provide shell access.
git clone / git add する
この記事で紹介した方法の場合、メインアカウントは通常どおりで git clone
できます。
サブアカウントの場合は、以下を参考に変更してください。
# メイン
git clone git@github.com:username/repository.git
git remote add origin git@github.com:username/repository.git
# サブ
git clone git@github.com.sub:username/repository.git
git remote add origin git@github.com.sub:username/repository.git
git の remote.origin.url の設定(.git/config)
以下のコマンドでgitのURLが正しく設定されているか確認します。
git config remote.origin.url
上記のgit cloneのURLと合致していればOK。なっていない場合は変更しましょう。
# サブの場合
git config remote.origin.url git@github.com.sub:username/repository.git
git の user.name / user.emailの設定
リポジトリごとに名前とメールアドレスの設定をしましょう。
グローバル側にはメインの名前とメールアドレスを設定しておき、サブの場合はローカル側で設定をするといいかもしれません。
git config --global user.name [メインのユーザー名]
git config --global user.email [メインのメールアドレス]
cd path/to/repository
git config --local user.name [サブのユーザー名]
git config --local user.email [サブのメールアドレス]
Discussion