エンジニアライフスタイルブログを運営しているミウラ(@miumiu06171)です。
普段はフリーランスでシステムエンジニアをしております。
今回は、GitHubアカウントを複数アカウントで運用する設定方法と動作確認方法を紹介します。
GitHubアカウントを2つ用意する
GitHubアカウントを複数アカウントで運用すべく、まずは2つのアカウントを作成します。
2つのメールアドレスを準備し、こちらからGitHubアカウントを作成します。
メインアカウントのメールアドレス「main@gmail.com」、サブアカウントのメールアドレスを「sub@gmail.com」と仮定し、説明していきます。
GitHubアカウントでログインできることを確認する
さきほど作成したGitHubのメインアカウントとサブアカウントのそれぞれで、こちらからGitHubへログインできることを確認します。
GitHubアカウントのSSH KEYを作成する
GitHubアカウントのメインアカウントとサブアカウントで使用するSSH KEYをそれぞれ作成します。
SSH KEYは、秘密鍵(xxxxx)と公開鍵(xxxxx.pub)の2ファイルで構成されます。
「~/.ssh」へカレントディレクトリを移動
SSH KEYを作成する前にカレントディレクトリを「~/.ssh」へ移動します。
1 |
cd ~/.ssh |
GitHubメインアカウントのSSH KEYを作成(ssh-keygen)
「ssh-keygen -t ed25519 -f id_rsa」コマンドでSSH KEYを作成します。
1 |
ssh-keygen -t ed25519 -f id_rsa |
「~/.ssh/id_rsa」と「~/.ssh/id_rsa.pub」の2つのファイルが作成できているか確認します。
GitHubサブアカウントのSSH KEYを作成(ssh-keygen)
「ssh-keygen -t ed25519 -f id_rsa_sub」コマンドでSSH KEYを作成します。
1 |
ssh-keygen -t ed25519 -f id_rsa_sub |
「~/.ssh/id_rsa_sub」と「~/.ssh/id_rsa_sub.pub」の2つのファイルが作成できているか確認します。
GitHubアカウントのログイン画面からSSH KEYを登録する
SSH KEYが作成できたら、GitHubへログインし、メインアカウントとサブアカウントそれぞれで公開鍵(xxxxx.pub)を登録します。
メインアカウントに対応した公開鍵(id_rsa.pub)、サブアカウントに対応した公開鍵(id_rsa_sub.pub)をそれぞれ登録します。
GitHubへログインし、右上のアカウントアイコンから「Settings」→左メニュー「SSH and GPG keys」→「SSH keys」欄の「New SSH key」ボタンを選択します。
Title欄に任意の名前を入力し、key欄に公開鍵ファイルの中身を貼り付けます。
ここまでできたら、一度GitHubからログアウトし、同じ作業をもう一つのアカウントでも実施します。
メインアカウントでログインしている場合はメインアカウントの公開鍵であるid_rsa.pubファイル、サブアカウントでログインしている場合はサブアカウントの公開鍵id_rsa_sub.pubファイルの中身を貼り付けて登録してください。
~/.ssh/configファイル編集
GitHubへ公開鍵を登録することができたら、次はPC上で「~/.ssh/config」ファイルを編集します。
「~/.ssh/config」ファイルを編集し、メインアカウントの場合はメインアカウント用秘密鍵「id_rsa」、サブアカウントの場合はサブアカウント用秘密鍵「id_rsa_sub」を参照するような設定を行います。
以下は、configファイルの設定例になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#メインアカウント Host github HostName github.com IdentityFile ~/.ssh/id_rsa User git Port 22 TCPKeepAlive yes IdentitiesOnly yes #サブアカウント Host github-sub HostName github.com IdentityFile ~/.ssh/id_rsa_sub User git Port 22 TCPKeepAlive yes IdentitiesOnly yes |
設定例では、以下の2点を覚えておきましょう。
1つ目は、configファイルの2行目、10行目のHost項目で任意の名前を付けており、今後メインカウントとサブアカウントでGitHubへアクセスするときの識別子になります。
2つ目は、configファイルの4行目、12行目のIdentityFile項目でメインカウントとサブアカウントのそれぞれの秘密鍵へのパスを設定しています。
メインアカウントとサブアカウントを切り替える関数を設定ファイルに追記する
configファイルの設定が完了したら、メインアカウントとサブアカウントを簡単に切り替えるための関数を設定ファイルに定義します。
設定ファイルは、OS等によって異なります。
UNIX系OSでBASHシェルを使う環境では、設定ファイルは「~/.bashrc」になり、以下のように定義します。
1 2 3 4 5 6 7 8 9 10 |
function gitmain() { git config --global user.name "<GitHubメインアカウント名>" git config --global user.email "<GitHubメインアカウントのメールアドレス>" source ~/.bashrc } function gitsub() { git config --global user.name "<GitHubサブアカウント名>" git config --global user.email "<GitHubサブアカウントのメールアドレス>" source ~/.bashrc } |
MacOSでZSHシェルを使う環境では、設定ファイルは「~/.zshrc」になり、以下のように定義します。
1 2 3 4 5 6 7 8 9 10 |
function gitmain() { git config --global user.name "<GitHubメインアカウント名>" git config --global user.email "<GitHubメインアカウントのメールアドレス>" source ~/.zshrc } function gitsub() { git config --global user.name "<GitHubサブアカウント名>" git config --global user.email "<GitHubサブアカウントのメールアドレス>" source ~/.zshrc } |
メインアカウントに切り替えるためのgitmain関数、サブアカウントに切り替えるためのgitsub関数を定義しています。
関数を実行すると、「git config」コマンドでGitHubアカウント名とメールアドレスの設定変更を行い、設定ファイルを再読み込みしています。
メインアカウントとサブアカウントの切り替えを確認
ここでは、さきほど定義した関数を使ってメインアカウントとサブアカウントを切り替えたあと、アカウントが切り替わっていることを確認します。
メインアカウントへ切り替える
「gitmain」関数を実行後、「git config –global user.email」コマンドでメインアカウントのメールアドレスが表示されるか確認します。
1 2 3 |
$ gitmain $ git config --global user.email main@gmail.com |
サブアカウントに切り替える
「gitsub」関数を実行後、「git config –global user.email」コマンドでサブアカウントのメールアドレスが表示されるか確認します。
1 2 3 |
$ gitsub $ git config --global user.email sub@gmail.com |
github.comへのSSH接続確認
アカウントの切り替えが確認できたら、次はSSH接続確認を行います。
メインアカウントでSSH接続確認(ssh -T)
「gitmain」関数を実行後、「ssh -T <Host>」コマンドでメインアカウントでSSH接続できるか確認します。
<Host>には、「~/.ssh/config」ファイルで設定したメインアカウントのHostを指定します。
1 2 3 |
$ gitmain $ ssh -T github Hi <メインアカウント名>! You've successfully authenticated, but GitHub does not provide shell access. |
戻り値として「Hi <メインアカウント名>! ~~~」というメッセージが返ってきたらオッケーです。
サブアカウントでSSH接続確認(ssh -T)
「gitsub」関数を実行後、「ssh -T <Host>」コマンドでメインアカウントでSSH接続できるか確認します。
<Host>には、「~/.ssh/config」ファイルで設定したサブアカウントのHostを指定します。
1 2 3 |
$ gitsub $ ssh -T github-sub Hi <サブアカウント名>! You've successfully authenticated, but GitHub does not provide shell access. |
戻り値として「Hi <サブアカウント名>! ~~~」というメッセージが返ってきたらオッケーです。
「WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!」エラーが出るときの対処方法
「ssh -T <Host>」コマンドを実行した際、「WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!」というエラーが発生する場合があります。
この場合のエラー内容とエラー対処法は、次のとおりです。
エラー内容
以下のようなエラーメッセージが表示されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the RSA key sent by the remote host is SHA256:uNiVztksCsDhcc0u9e8BujQXVUpKZIDTMczCvj3tD2s. Please contact your system administrator. Add correct host key in /c/Users/<ユーザ名>/.ssh/known_hosts to get rid of this message. Offending RSA key in /c/Users/<ユーザ名>/.ssh/known_hosts:8 Host key for github.com has changed and you have requested strict checking. Host key verification failed. |
エラー対処方法
こちらの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)を操作する基本的な使い方