Githubアカウントを複数使用している場合、下記のエラーが発生することがあります。
fatal: Could not read from remote repository.
Please make sure you have the correct access rights and the repository exists.
これは、既にローカル(Git)とリモート(Github)を繋いでいる場合、そのアカウントと既存のsshキーが紐づいているため、新しくsshキーを発行して、Githubに登録する必要があります。
難しいことはさておき、解決策を解説していきます。
1. sshキーを発行する
cd ~/.ssh
上記コマンドを実行してsshディレクトリに移動。
次に接続したいGithubアカウント用のsshキーを発行します。
ssh-keygen -t rsa -C [接続したいGithubのメールアドレス] -f [ファイル名]
([]部分を入れ替えてください。)
自分はプライベート用のGithubアカウントを接続したかったので、ファイル名をprivateにしました。
次に下記コマンドを実行してファイルが作成されているか確認してください。
ls
おそらく、2つファイルが作成されています。
private
→ 秘密鍵
private.pub
→ 公開鍵
2. 発行したsshキーをコピーする
pbcopy < ~/.ssh/公開鍵名
上記コマンドを実行すると公開鍵をコピーできます。
自分の場合はpbcopy < ~/.ssh/private.pub
となります。
3. コピーした公開鍵をGithubに追加する
SSH接続したいGithubアカウントにログインし、右上アイコン→Setting
→SSH and GPG keys
に移動。
New SSH key
を押して任意のタイトルと先ほどコピーした公開鍵を追加します。
4. configファイルを編集する
次に先ほど作成した公開鍵と秘密鍵のファイルと同階層にあるconfig
ファイルを編集していきます。
open config
上記コマンドでconfigファイルを開き、下記を追加。
Host github-[任意の文字]
User git
Port 22
HostName github.com
IdentityFile ~/.ssh/秘密鍵
TCPKeepAlive yes
IdentitiesOnly yes
簡単に説明すると、git remoteで登録しているurlにgithub-private
のホスト名がある場合は、IdentityFile
に記載している秘密鍵を参照するよ〜っていうイメージです。
5. remoteのURLを変更する
すでにリモートリポジトリと接続している場合、下記のようなURLになっていると思います。
git@[Host name]:[Account name]/[Repository name].git
[Host name]の部分を、先ほどconfig
ファイルに設定したホスト名に書き換えます。
例えば、configファイルのホスト名をgithub-private
にしている場合、
git@github-private:test/[Repository name].git
上記のように書き換えます。
書き換え方については、
git remote set-url origin git@github-private:test/test.git
でURLを書き換えることができます。
以上で冒頭に載せたエラーが解決し、複数アカウントでssh接続ができるようになってるかと思います。