ものづくりのブログ

うちのネコを題材にしたものづくりができたらいいなと思っていろいろ奮闘してます。

GitHubで複数のアカウントに同じ公開鍵を登録しようとすると「Key is already in use」と出たのでその場合の対応方法をメモる

GitHub で複数のアカウントに公開鍵を登録しようとすると「Key is already in use」と表示されて鍵の登録がうまくいかない。
この場合、デプロイ用のキーを複数作るとやりたいことができたのでその方法をメモります。

症状

公開鍵を登録しようとすると以下の画面のようなエラーになる。
f:id:a1026302:20210204102923p:plain

このエラーは、他のアカウントやリポジトリにすでに追加されているキーを追加しようとする場合に発生するようです。
docs.github.com

対応方法

作業端末

セカンダリの鍵作成

以下のコマンドでセカンダリの鍵を名前を指定して作成します。

$ ssh-keygen -f ~/.ssh/rep-second
「ssh config」作成

configファイルを作成します。

$ touch ~/.ssh/config
$ chmod 600 ~/.ssh/config
$ vim ~/.ssh/config
「ssh config」追記

config ファイルに "github-rep-second" の設定を追加します。

Host github-rep-second
  User git
  Port 22
  HostName github.com
  IdentityFile ~/.ssh/rep-second
  TCPKeepAlive yes
  IdentitiesOnly yes

Githubでの作業

ブラウザを立ち上げ、Github にアクセスします。

Githubに公開鍵を登録

Github にログインし先ほど作成したセカンダリの公開鍵を登録します。
f:id:a1026302:20210204105909p:plain

作業端末

作業端末に切り替えます。

sample01 作成

検証用のレポジトリを作成します。
f:id:a1026302:20210204105630p:plain

GitHubにアクセス

接続先のホスト名をconfigで指定したホスト名に変更して[git clone]できるか検証します。

git@github.com:{{セカンダリID}}/sample01.git
   ↓
git@github-rep-second:{{セカンダリID}}/sample01.git

git clone git@github-rep-second:{{セカンダリID}}/sample01.git
Cloning into 'sample01'...
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (3/3), done.
Receiving objects: 100% (4/4), done.
remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0

適当にファイルを編集してaddして、commitしてみて git push できれば問題解決できたと思います。