2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【備忘録】1つのPCで複数のGitHubアカウントをディレクトリごとに使い分ける方法

Last updated at Posted at 2024-09-27

個人用のGitHubアカウントと学校用(仕事用)のGitHubアカウントを使用して,同一PCからディレクトリごとにアカウントを管理したいときに困ったので,備忘録的に記します.

・下の方法で出来ましたが,再現性があるかはわかりません...
・2つのGitHubアカウントが存在することが前提です.
$以下の部分だけターミナルに打ち込んでください.

1. アカウント1の鍵を登録

まず,作業ディレクトリに移動します.

$ cd
$ cd .ssh

それぞれのGitHubのアカウントごとに公開鍵と秘密鍵を生成します.

$ ssh-keygen -t rsa

すると,下のように文章が一行ごとに出力されます.

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/(username)/.ssh/id_rsa):id_rsa #任意のファイル名を設定
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

Enter file in which to save the key (/Users/(username)/.ssh/id_rsa):
の時に,任意のファイル名を指定してください.何も入力せずにEnterを押すと,自動的にid_rsaというファイル名になります.2つ目のアカウントの鍵を生成するときに何も入力せずにEnterを押すと,同じファイル名のため内容が上書きされてしますうので注意して下さい.
3行目からはパスフレーズの入力が求められていますが,こだわりが無ければ何も入力せずにEnterを押して大丈夫です.

$ ls

上のコマンドを入力すると下のような出力になっていることが確認できます.
id_rsaが秘密鍵で,id_rsa.pubが公開鍵です.

id_rsa id_rsa.pub known_hosts

2. アカウント2の鍵の登録

同様の手順で2つ目のアカウントの鍵を登録していきます.

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/(username)/.ssh/id_rsa):id_rsa_sub #任意のファイル名を設定
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
$ ls .ssh
id_rsa id_rsa.pub id_rsa_sub id_rsa_sub.pub known_hosts

3. GitHubに公開鍵を登録

生成した公開鍵をGitHubに登録します.

まず,アカウント1の鍵を登録します.
下のコマンドを入力すると,公開鍵がターミナルに出力されます.

$ cat ~/.ssh/id_rsa.pub 

出力を全てコピーしてください.
次に,アカウント1のGitHubアカウントに移動してください.
右上のアイコンをクリック> Settings > SSH and GPG keys
の順で移動して,右上のNew SSH key の緑のボタンをクリックしてください.
すると,下の画像のような画面に遷移するので,Titleに好きなタイトルをつけて,Keyに先ほどコピーした公開鍵をペーストします.最後にAdd SSH keyを押して,登録完了です.
スクリーンショット 2024-09-27 141957.png

同様の手順でアカウント2にも公開鍵を登録してください.

$ cat ~/.ssh/id_rsa_sub.pub 

4. PCに設定を登録する.

ディレクトリを移動して,Config設定ファイルを作成し,編集画面に遷移します.

$ cd
$ cd .ssh
$ touch config
$ vi config

キーボードのiを押して,編集モードにしたら,下のように書きます.

Host Main
  HostName github.com
  User main
  IdentityFile ~/.ssh/id_rsa
  User git
  TCPKeepAlive yes
  IdentitiesOnly yes

Host Sub
  HostName github.com
  User sub
  IdentityFile ~/.ssh/id_rsa_sub
  User git
  TCPKeepAlive yes
  IdentitiesOnly yes

Hostには任意の名前(なんでもいい)をつけて,IdentityFileには自分が設定した鍵ファイルの名前を入力してください.~/.ssh/任意の鍵ファイル名
編集が完了したら,キーボードのEstを押して,:wqと入力して編集を終了してください.


◎ 任意の鍵ファイル名は下のコマンドで確認できます.

$ ls

5. GitHubとPCの接続確認(注:ここから再現性が微妙です)

基本的には,アカウント1(main)になっているはずなので,アカウント2(Sub)と接続したいディレクトリまで移動してください.

$ cd 任意のファイル名

そのディレクトリに登録されているGitHubのアカウント名とユーザー名を確認してください.

$ git config user.name
$ git config user.email

自分が接続したいアカウントと違っていたら,変更してください.

$ git config user.name "GitHubのアカウント名を入力"
$ git config user.email "GitHubに登録したメールアドレスを入力"

再度名前とメールが合っているか確認してください.
git config --globalというオプションをつけるとPC全体の設定が変更できます.

次に,リモート接続ができている確認します.

$ git remote -v
● 何も出力されない場合

下のように入力してください.(Host名とユーザー名は,4. PCに設定を登録するConfigファイルの中身を参照してください.)

git remote add origin git@(Host名):ユーザー名/ディレクトリ名.git

アカウント2に接続した場合,下のように表示されたらOKです.

origin git@Sub:sub/接続したいリポジトリ名.git (fetch)
origin git@Sub:sub/接続したいリポジトリ名.git (push)
● 接続場所が違う場合

下のように入力して上書きしてください.

$ git remote set-url origin git@ホスト名:ユーザー名/接続したいリポジトリ名.git

さらに接続できているかの確認をします.

$ ssh -T git@github.com

下のような表示で正しいアカウント名になっていれば大丈夫です.

Hi アカウント名! You've successfully authenticated, but GitHub does not provide shell access.

エラーが出たり,アカウント名が違う場合下の手順を踏むと解決することが多いです.

$ eval "$(ssh-agent -s)"
Agent pid 数字
$ ssh-add ~/.ssh/秘密鍵のファイル名

ssh-add ~/.ssh/id_rsa_sub
最後にもう一度確認してあっていることを確認してください.

$ ssh -T git@github.com
Hi Sub! You've successfully authenticated, but GitHub does not provide shell access.

補足

5は過不足のほどが不明です.正確な情報分かれば記事を修正します.

作業環境

・Windows11
・Ubuntu20.04.6 LTS

参考文献

・vscodeで使用するgithubのアカウント切り替え方法
 https://qiita.com/namachoco0144/items/0d193b868b80319ed864
・コマンド1つでGitHubのアカウントを切り替えるテクニック
 https://note.com/bluecode_inc/n/n3f67774c8642
・Visual Studio CodeでGitHubの複数アカウントを使い分ける
 https://qiita.com/ykoizumi0903/items/44e24d4180ae931552ce
・複数のGitHubアカウントを使い分けたい時の設定方法とTips
 https://zenn.dev/taichifukumoto/articles/how-to-use-multiple-github-accounts

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?