Githubのアカウントを複数使い分ける方法
概略
Githubで業務用と個人用の2アカウントを利用している。
普段は業務用しか使っていなかったが、いざ個人アカウントを利用しようとしたら、pushできない。
Githubへの認証などの設定が全くされていないのだから当然である。
その設定手順をメモ程度にまとめておく。
ssh-keyの生成
まずは以下コマンドでkeyの生成を行う。
> cd %USERPROFILE%\.ssh > ssh-keygen -t rsa -b 4096 -C "メールアドレス"
質問がいくつかされるが、以下のように回答。
Enter file in which to save the key (/c/Users/Satoshi.T/.ssh/id_rsa): id_personal_rsa Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in id_personal_rsa Your public key has been saved in id_personal_rsa.pub The key fingerprint is: SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx メールアドレス The key's randomart image is: +---[RSA 4096]----+ | xxxx | | xxxxx | | xxxxx | | xxxxx xxxxx.| | xxxxyzxxxx| | xxxxx | | xxxxx | | xxxxx | | | +----[SHA256]-----+
Githubに生成されたpublic keyを登録する
Githubにログイン>右上アイコン>Settings>SSH and GPG keysにアクセス。
New SSH keyから、生成されたid_personal_rsa.pubの中身をまるっと登録。
登録の結果、以下のようになる。
configファイルを作成
.sshフォルダに「config」という名前のファイルを作成する。
ローカルからGithubにpushする際、remoteのURLに指定したユーザーアカウントに応じ、ssh-keyを使い分ける必要がある。
どのssh-keyを利用するのかを指定しておくのが、このconfigファイルである。
以下の内容でconfigファイルを作成する。
Host github #任意のホスト名 HostName github.com IdentityFile ~/.ssh/id_personal_rsa #メインアカウントの鍵のファイル User git Port 22 TCPKeepAlive yes IdentitiesOnly yes
Githubとの接続確認
以下を実行すると、public keyの登録などが正しくできたかが確認できる。
ssh -T github
結果、以下のようになればOK。
Hi (username)! You've successfully authenticated, but GitHub does not provide shell access.
ローカルのGitプロジェクトのremote-urlを設定する。
対象プロジェクトに対し、以下のコマンドを実行する。
git remote set-url origin git@github:Githubユーザー名/sample-app.git
@後の「github」部分がconfigファイルで指定したホスト名になるようにする。
pushしてみる
$ git push origin master Enumerating objects: 23, done. Counting objects: 100% (23/23), done. Delta compression using up to 4 threads Compressing objects: 100% (21/21), done. Writing objects: 100% (23/23), 51.48 KiB | 554.00 KiB/s, done. Total 23 (delta 2), reused 0 (delta 0), pack-reused 0 To github:username/sample-app.git * [new branch] master -> master
できた!