CODE

【TIPS】複数GitHubアカウントを使い分ける設定方法と動作確認

github-multiple-account-settings-usage

 

エンジニアライフスタイルブログを運営しているミウラ(@miumiu06171)です。

 

普段はフリーランスでシステムエンジニアをしております。

 

今回は、GitHubアカウントを複数アカウントで運用する設定方法と動作確認方法を紹介します。

 

github-multiple-account-01

 

 

GitHubアカウントを2つ用意する

 

GitHubアカウントを複数アカウントで運用すべく、まずは2つのアカウントを作成します。

 

2つのメールアドレスを準備し、こちらからGitHubアカウントを作成します。

 

github-multiple-account-02

 

メインアカウントのメールアドレス「main@gmail.com」、サブアカウントのメールアドレスを「sub@gmail.com」と仮定し、説明していきます。

 

 

GitHubアカウントでログインできることを確認する

 

さきほど作成したGitHubのメインアカウントとサブアカウントのそれぞれで、こちらからGitHubへログインできることを確認します。

 

 

GitHubアカウントのSSH KEYを作成する

 

GitHubアカウントのメインアカウントとサブアカウントで使用するSSH KEYをそれぞれ作成します。

 

github-multiple-account-ssh-key-generation-01

 

SSH KEYは、秘密鍵(xxxxx)と公開鍵(xxxxx.pub)の2ファイルで構成されます。

 

 

「~/.ssh」へカレントディレクトリを移動

 

SSH KEYを作成する前にカレントディレクトリを「~/.ssh」へ移動します。

 

 

 

GitHubメインアカウントのSSH KEYを作成(ssh-keygen)

 

github-multiple-account-ssh-key-generation-02

 

「ssh-keygen -t ed25519 -f id_rsa」コマンドでSSH KEYを作成します。

 

 

「~/.ssh/id_rsa」と「~/.ssh/id_rsa.pub」の2つのファイルが作成できているか確認します。

 

GitHubサブアカウントのSSH KEYを作成(ssh-keygen)

 

github-multiple-account-ssh-key-generation-03

 

「ssh-keygen -t ed25519 -f id_rsa_sub」コマンドでSSH KEYを作成します。

 

 

「~/.ssh/id_rsa_sub」と「~/.ssh/id_rsa_sub.pub」の2つのファイルが作成できているか確認します。

 

 

GitHubアカウントのログイン画面からSSH KEYを登録する

 

SSH KEYが作成できたら、GitHubへログインし、メインアカウントとサブアカウントそれぞれで公開鍵(xxxxx.pub)を登録します。

 

github-multiple-account-ssh-key-registration-01

 

メインアカウントに対応した公開鍵(id_rsa.pub)、サブアカウントに対応した公開鍵(id_rsa_sub.pub)をそれぞれ登録します。

 

GitHubへログインし、右上のアカウントアイコンから「Settings」→左メニュー「SSH and GPG keys」→「SSH keys」欄の「New SSH key」ボタンを選択します。

 

github-ssh-key-registration-01

 

Title欄に任意の名前を入力し、key欄に公開鍵ファイルの中身を貼り付けます。

 

ここまでできたら、一度GitHubからログアウトし、同じ作業をもう一つのアカウントでも実施します。

 

メインアカウントでログインしている場合はメインアカウントの公開鍵であるid_rsa.pubファイル、サブアカウントでログインしている場合はサブアカウントの公開鍵id_rsa_sub.pubファイルの中身を貼り付けて登録してください。

 

 

~/.ssh/configファイル編集

 

GitHubへ公開鍵を登録することができたら、次はPC上で「~/.ssh/config」ファイルを編集します。

 

github-multiple-account-config-file-edit-01

 

「~/.ssh/config」ファイルを編集し、メインアカウントの場合はメインアカウント用秘密鍵「id_rsa」、サブアカウントの場合はサブアカウント用秘密鍵「id_rsa_sub」を参照するような設定を行います。

 

以下は、configファイルの設定例になります。

 

 

設定例では、以下の2点を覚えておきましょう。

 

1つ目は、configファイルの2行目、10行目のHost項目で任意の名前を付けており、今後メインカウントとサブアカウントでGitHubへアクセスするときの識別子になります。

 

2つ目は、configファイルの4行目、12行目のIdentityFile項目でメインカウントとサブアカウントのそれぞれの秘密鍵へのパスを設定しています。

 

 

メインアカウントとサブアカウントを切り替える関数を設定ファイルに追記する

 

configファイルの設定が完了したら、メインアカウントとサブアカウントを簡単に切り替えるための関数を設定ファイルに定義します。

 

設定ファイルは、OS等によって異なります。

 

UNIX系OSでBASHシェルを使う環境では、設定ファイルは「~/.bashrc」になり、以下のように定義します。

 

 

MacOSでZSHシェルを使う環境では、設定ファイルは「~/.zshrc」になり、以下のように定義します。

 

 

メインアカウントに切り替えるためのgitmain関数、サブアカウントに切り替えるためのgitsub関数を定義しています。

 

関数を実行すると、「git config」コマンドでGitHubアカウント名とメールアドレスの設定変更を行い、設定ファイルを再読み込みしています。

 

 

メインアカウントとサブアカウントの切り替えを確認

 

ここでは、さきほど定義した関数を使ってメインアカウントとサブアカウントを切り替えたあと、アカウントが切り替わっていることを確認します。

 

メインアカウントへ切り替える

 

「gitmain」関数を実行後、「git config –global user.email」コマンドでメインアカウントのメールアドレスが表示されるか確認します。

 

 

 

サブアカウントに切り替える

 

「gitsub」関数を実行後、「git config –global user.email」コマンドでサブアカウントのメールアドレスが表示されるか確認します。

 

 

 

github.comへのSSH接続確認

 

アカウントの切り替えが確認できたら、次はSSH接続確認を行います。

 

メインアカウントでSSH接続確認(ssh -T)

 

「gitmain」関数を実行後、「ssh -T <Host>」コマンドでメインアカウントでSSH接続できるか確認します。

 

<Host>には、「~/.ssh/config」ファイルで設定したメインアカウントのHostを指定します。

 

 

戻り値として「Hi <メインアカウント名>! ~~~」というメッセージが返ってきたらオッケーです。

 

 

サブアカウントでSSH接続確認(ssh -T)

 

「gitsub」関数を実行後、「ssh -T <Host>」コマンドでメインアカウントでSSH接続できるか確認します。

 

<Host>には、「~/.ssh/config」ファイルで設定したサブアカウントのHostを指定します。

 

 

戻り値として「Hi <サブアカウント名>! ~~~」というメッセージが返ってきたらオッケーです。

 

 

「WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!」エラーが出るときの対処方法

 

「ssh -T <Host>」コマンドを実行した際、「WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!」というエラーが発生する場合があります。

 

この場合のエラー内容とエラー対処法は、次のとおりです。

 

エラー内容

 

以下のようなエラーメッセージが表示されます。

 

 

エラー対処方法

 

こちらのGitHubブログより、「ssh-keygen -R github.com」コマンドを実行した後、SSH KEYを作成し直し、再度SSH接続コマンドを実行します。

 

 

リモートリポジトリへプッシュする方法

 

メインアカウントでリモートリポジトリへプッシュ

 

メインアカウントへ切り替える

 

gitmain関数を実行し、メインアカウントへ切り替えます。

 

gitmain

 

 

リモートリポジトリURLを設定する

 

リモートリポジトリURLを以下のようにHost指定するように変更します。

 

git remote add origin git@github.com:<GitHubメインアカウント名>/test.git

git remote add origin git@github:<GitHubメインアカウント名>/test.git

変更します。

 

リモートリポジトリへプッシュする

 

git push -u origin master

 

 

サブアカウントでリモートリポジトリへプッシュ

 

サブアカウントへ切り替える

 

gitsub関数を実行し、サブアカウントへ切り替えます。

 

gitsub

 

リモートリポジトリURLを設定する

 

リモートリポジトリURLを以下のようにHost指定するように変更します。

 

git remote add origin git@github.com:<GitHubサブアカウント名>/test.git

git remote add origin git@github-sub:<GitHubサブアカウント名>/test.git

変更します。

 

リモートリポジトリへプッシュする

 

git push -u origin master

 

 

リモートリポジトリURLを間違えた場合の変更・上書き方法

 

リモートリポジトリへプッシュする際にリモートリポジトリURLを間違った場合、リモートリポジトリURLを変更・上書きする以下のコマンドを実行します。

 

【書式】

git remote set-url <リモートレポジトリ名> <新しいURL>

 

【コマンド例】

git remote set-url origin git@github-sub:<GitHubサブアカウント名>/test.git

 

 

リモートリポジトリからクローンする方法

 

リモートリポジトリへプッシュする方法と同じ流れでクローンも可能です。

 

メインアカウントでクローン

 

メインアカウントでクローンするには、以下のように「gitmain」関数を実行し、「git clone」コマンドを実行します。

 

gitmain

git clone git@github:<GitHubメインアカウント名>/test.git

 

 

サブアカウントでクローン

 

サブアカウントでクローンするには、以下のように「gitsub」関数を実行し、「git clone」コマンドを実行します。

 

gitsub

git clone git@github-sub:<GitHubメインアカウント名>/test.git

 

 

まとめ

 

いかがでしたでしょうか。

 

1つのPCでGitHubを複数アカウント運用する方法を紹介してきました。

 

エンジニアリング業務を行う人にとっては、業務用アカウントと個人用アカウントで複数アカウントを運用する機会が多いと思い、本記事にまとめてみました。

 

ぜひ参考にして頂ければと思います。

 

【関連記事】

 

【必須スキル】絶対マスターすべきGitコマンドとGitHubの使い方

 

【必須スキル】Gitコマンドでブランチ(branch)を操作する基本的な使い方