「複数のGitHubアカウントを運用することになった」
「プッシュ先を間違えることが怖い」
「いちいちアカウントを切り替えるのが面倒」
複数のGitHubアカウントを運用することになった場合、面倒ごとがたくさん思い浮かびますよね。
今回は、「1コマンド」でGitHubアカウントを切り替えて、手間なく安全にgitコマンドを使う方法をご紹介します。
なお、この切り替え方法は、GitHubアカウントだけでなく、AWSのEC2接続先を切り替える際にも応用できます。
結論から言ってしまうと、以下の手順で設定すると、アカウントの切り替えができるようになります。
- 各GitHubアカウント用のSSH鍵を作成する
- SSH設定ファイルを記述する
- GitHubに公開鍵を登録する
それぞれの詳しい手順を解説していきます。
※記事内で使っているコマンドはMacユーザー向けです。
目次
GitHub用のSSH鍵を生成する
まずはローカルでGitHubアカウント用のSSH鍵を作ります。
手順の流れは以下の通りです。
- .sshフォルダへ移動
- 念のため、バックアップを取っておく
- ssh-keygenコマンドを実行する
- ファイル名を変更する
- パスフレーズは入力せずEnter * 2
1つずつ解説します。
まずは.sshフォルダに移動して、既存のSSH鍵ファイルがないか確認しましょう。
cd ~/.ssh
ls -l
# 実行結果内にid_rsaやid_rsa.pubなどがあった場合、以下のコマンドでバックアップを取得しておく。
cp id_rsa id_rsa_bk
cp id_rsa.pub id_rsa_bk.pub
既存ファイルがあった場合、この後の手順で誤って上書きしてしまった時のために、バックアップを取得しておいてくださいね。
次に、以下のコマンドでSSH鍵を生成します。
“your_email@example.com”には、対象のGitHubアカウントの登録メールアドレスを入力してください。
# 今回はid_rsa_primaryというファイル名にしましょう。
Enter file in which to save the key (/Users/deatiger/.ssh/id_rsa):
以下のようにパスフレーズを聞かれますが、何も入力せずにEnterを2回押しましょう。
Enter passphrase (empty for no passphrase):
.sshフォルダ内に、”id_rsa_primary”と”id_rsa_primary.pub”というファイルが生成されたはずです。
前者が秘密鍵で、後者が公開鍵です。
秘密鍵は絶対に外部に漏らさないようにしましょう。
ここまでで、SSH鍵の生成は完了です。
今回は複数アカウントを運用する方法なので、もう1アカウント分、上記の手順を繰り返してください。
2アカウント目の鍵ファイル名はid_rsa_secondaryとします。
ssh-keygenで指定するメールアドレスも2アカウント目のものにしてくださいね。
SSH設定ファイルを作成する
次に、SSH設定ファイルを作って、そこに記述していきます。
# viコマンドでファイルを作成&編集開始
vi ~/.ssh/config
以下の内容をコピーして貼り付けてください。
~/.ssh/config
Host github_primary
User git
Port 22
HostName github.com
IdentityFile ~/.ssh/github_primary_id_rsa
TCPKeepAlive yes
IdentitiesOnly yes
Host github_secondary
User git
Port 22
HostName github.com
IdentityFile ~/.ssh/github_secondary_id_rsa
TCPKeepAlive yes
IdentitiesOnly yes
escapeキー→「:wq」を入力して編集を完了させましょう。
作成したSSH公開鍵をGitHubに登録する
次は、作成したSSH公開鍵をGitHubに登録します。
まずは以下の手順で公開鍵の登録画面までいきます。
- GitHubにアクセス
- 右上のアイコンから[Settings]をクリック
- [SSH and GPC Keys]タブを選択
- [New SSH Key]ボタンをクリック
以下のような画面にたどり着いたはずです。
次に、ターミナルで以下コマンドを実行します。
# id_rsa_primaryの公開鍵の中身を確認する場合
cat ~/.ssh/id_rsa_primary.pub
表示された公開鍵ファイルの中身をコピーします。
そして、GitHubのWebページに戻り、[key]に貼り付けます。
[title]は適当にわかりやすい名前をつけておきましょう。
[Add SSH Key]を押したら登録完了です。
2アカウント目も同様の手順で公開鍵を登録しておいてください。
sshコマンドでGitHubアカウントを切り替える
ここまでの手順で設定は完了したので、実際にsshコマンドでGitHubアカウントを切り替えてみましょう。
configファイルに記載したHost名を、sshコマンドに続けて指定して実行します。
# 1つ目のアカウント(github_primary)を使う時
ssh github_primary
# 2つ目のアカウント(github_secondary)を使う時
ssh github_secondary
任意のgitコマンドが切り替えたアカウントで実行されるようになります。
SSHで切り替えてもgit cloneで権限エラーが出る場合の対処方法
ただし、git cloneするときは注意が必要です。単純にgit cloneコマンドを打っても以下のようなエラーが出るはずです。
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
git cloneするときは、どのアカウントを使うのか明示的に指定する必要があります。
Host名がgithub_secondaryのアカウントでgit cloneする場合の例が以下となります。
git clone git@github_secondary:REPOSITORY_PATH/REPOSITORY.git
以上で、複数GitHubアカウントをSSHで切り替えて運用する方法の解説は終了です。
記事の内容がお役にたったなら、ぜひシェアしていただけると嬉しいです。
最後に記事の内容をまとめておきます。
- 複数のGitHubアカウントはSSHの設定で簡単に切り替えられる
- 各GitHubアカウント用のSSH鍵を作る
- 生成した公開鍵をGitHub上で登録する
- SSHのconfigファイルを記述する
- git cloneするときは明示的にアカウントの指定が必要
- 無料・簡単・片手でホームページを作成できる自社サービス Rakwi
- Web制作とアプリ開発を学べるオンラインプログラミング講座 Upstairs
- 開発,DX推進支援サービス スタートアッププラン