👀

2つ以上のGitHubアカウントを使おう

2024/03/03に公開

SNS の開発のためにブログを立ち上げました。RCLab です。
使った技術や、備忘録のために記事を書いてみようと思います。

GitHub アカウントを使い分ける

心機一転始めたいこともあり GitHub のアカウントも新規に発行した次第ですが、git clone するまでに少し手こずったのでその備忘録になります。

新しく ssh key を作成・登録

GitHub で開発をしたことのある皆さんなら必ず GitHub に公開鍵を登録しますよね?皆さんと同じように、私も公開鍵を置こうとしましたが、以下のようにエラーになってしまいました。

わかりやすいエラーメッセージですね。既にこの公開鍵は普段使いしている GitHub アカウントに紐づけられており使われているようです。なので改めて鍵を作り直しましょう。

$ ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/rclab/.ssh/id_ed25519): /Users/rclab/.ssh/id_ed25519_rclab
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
#########################################
# 注意。ファイル名を意図的に編集すること。    
# Enter 連打すると既存の鍵が上書きされます。
#########################################
Your identification has been saved in /Users/rclab/.ssh/id_ed25519_rclab
Your public key has been saved in /Users/rclab/.ssh/id_ed25519_rclab.pub
The key fingerprint is:
SHA256:I9Cn/7UGfHgSGiWmCn7qvBdMIqdgHsGuGSOCFB+XuFk rclab@rclab.local
The key's randomart image is:
+--[ED25519 256]--+
|.......          |
| +..oE  o .      |
|+ ..= .o.o       |
|O++o...o. .      |
|BO.= .o S+ o     |
|+.. =  o..= o    |
|   o .  .  =.    |
| .. .    . ...   |
| .+o      ...    |
+----[SHA256]-----+

さて、こうしてできた鍵を登録します。

できました 🎉

早速 git clone するも...

鍵が登録できたので git clone しましょう!

$ git clone git@github.com:RCLab0/Zenn.git
Cloning into 'Zenn'...
ERROR: Repository not found.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

むむ、'make sure you have the correct access rights' と言われてしまいました。どうやら権限が正しくないようです。ちゃんと ssh できてるのでしょうか?

$ ssh git@github.com
PTY allocation request failed on channel 0
Hi UserName! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.

当たり前ですね。特に使う鍵を指定していないので、普段使いのユーザー名が表示されています。
では、鍵を指定してみましょう。

$ git@github.com -i ~/.ssh/id_ed25519_rclab
PTY allocation request failed on channel 0
Hi RCLab0! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.

お、ちゃんと LCLab0 になってるじゃない!ということは「鍵を指定して clone」すれば git clone も通るのでは...?

~/.ssh/config を編集して git clone する

パッと思いついたのが、~/.ssh/config を編集して、Host を弄ってしまうということでした。

~/.ssh/config
$ vi config
Host rclab-github.com
  User git
  Hostname github.com
  IdentityFile ~/.ssh/id_ed25519_rclab
  IdentitiesOnly yes

このようにして、以下のように書き換えてやると

$ git clone git@rclab-github.com:RCLab0/Zenn.git
Cloning into 'Zenn'...
warning: You appear to have cloned an empty repository.

できました! 🎉

その他、 git config を編集する方法

どうやら、 git が用いる ssh コマンドを config で指定できるようです。

$ git config core.sshCommand "ssh -i ~/.ssh/id_ed25519_rclab -F /dev/null"

このようにすると

$ git clone git@github.com:RCLab0/Zenn.git

でも clone できるようです。ただ、 global の設定を弄りたくはないので、

$ git -c core.sshCommand="ssh -i ~/.ssh/id_ed25519_rclab -F /dev/null" clone git@github.com:RCLab0/Zenn.git

のようにするのがいいと思います。コマンド長いので、書き換えの手間はかかりますが、 ssh config 弄る方が現状得策かな、って思ってます。

GitHubで編集を提案

Discussion