2023年1月10日火曜日

github「Error: Key already in use」の対処方法

 githubからリポジトリをcloneしようとしたら、以下のエラーが出ました。

fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.

sshキーは登録されてないかなと思って、こちらの手順を沿って、GitHub アカウントへの新しい SSH キーの追加しようとしたら、今度「Key already in use」のエラーが出て、登録できません。

そのssh publicキーはどんなアカウント、どのリポジトリに登録されているかを調査するため、以下のコマンドで見てみました

$ ssh -T -ai ~/.ssh/id_rsa git@github.com

# Connect to GitHub.com using a specific ssh key
> Hi <USER NAME>@<REPOSITORY NAME>! You've successfully authenticated, but GitHub does not
> provide shell access.
上記、「<USER NAME>」のところは登録されているアカウント情報になります。「<REPOSITORY NAME>」のところはどんなリポジトリに登録されているのかを示しています。

<REPOSITORY NAME>」がない場合は、アカウントに登録されていることになります。
どこで登録されているのかをわかったら、登録されているアカウントあるいはリポジトリのsshキー一覧ページを確認します。
※ アカウントに紐づくsshキー一覧ページはアカウントアイコン→「Settings」→左ナビーの「SSH and GPG keys」よりアクセスできます
※ リポジトリに紐づくsshキー一覧ページはリポジトリの「Settings」→「Deploys keys」よりアクセスできます

ただ、githubのsshページ一覧に表示されてるのはssh public キーのsha256 fingerprintになります。どのキーが当てはまるのは、以下のコマンドで確認できます
ssh-keygen -lf ~/.ssh/id_rsd
# 或いは明示的にsha256 fingerprintを指定して出力
ssh-keygen -lf ~/.ssh/id_rsa -E sha256
確認できたsshキーを削除し、再度紐づく対象アカウントに登録すれば問題なく登録できました。