2つ以上のGitHubアカウントを使おう
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 を弄ってしまうということでした。
$ 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 弄る方が現状得策かな、って思ってます。
Discussion