読者です 読者をやめる 読者になる 読者になる

GitHubで複数のリポジトリを扱う時の公開鍵の登録について

git

GitHubで新しくリポジトリを作って初期インポートファイルをpushやremoteの情報をしようとしたら下記の様なエラーとなりました。

C:\git_reps\ldc-tag-rename>git init
Initialized empty Git repository in C:/git_reps/ldc-tag-rename/.git/

# ファイルの追加・コミットなど略

C:\git_reps\ldc-tag-rename>git remote add github git@github.com:guyon/ldc-tag-rename.git

C:\git_reps\ldc-tag-rename>git remote show github
ERROR: Permission to guyon/ldc-tag-rename denied to guyon/configs.
fatal: The remote end hung up unexpectedly

なんでだろ?と思って調べてみたら鍵の設定がまずかったみたいです。自分の場合は鍵を2つ用意してそれぞれGitHubに登録して使っています。1個はMac用、もう1個はその他WinやLinux用。

上記のメッセージから「configsのリポジトリで使っていてldc-tag-renameリポジトリでは使えないよ」という感じでしょうか?

GitHubの設定を確認してみると、account → SSH Public KeysにMac用の鍵を登録してあって、その他用の鍵がconfigsリポジトリ → edit → Deploy Keysにその他用の鍵を登録してあります。

あーそうか、じゃあ新しいリポジトリにもその他用の鍵を登録してあげればいいのだなと思ってやってみたのですが、登録しようとすると「Oops! The key has already been taken. 」とエラーメッセージが表示されます。

登録画面の説明文を読む(最初に読むべきことなんですが…)と

Deploy keys give your server access to pull from your repo. They must be unique - you can't reuse a key across repos or users. If you intend to have push access, you should add keys to your account.

とあります。

  • リポジトリやユーザー間で鍵を再利用することはできない。
  • 鍵の登録は一意じゃなきゃいけない。
  • もしpushしたかったらaccountに鍵を追加必要がある。

という事でしょうか。
configsとldc-tag-renameで共通の鍵を使おうとしていたのが駄目で、accountに対して登録する場合もconfigsに登録しておいた鍵を一度消してからでないと登録できませんでした。

別鍵を新たに作っても良かったのですが、自分一人で使っている鍵ということとgit用にこれ以上使い分ける必要もなかったので素直にaccountに登録することで、pushとかremote showとかできるようになりました。