【GitHub】ローカルリポジトリをリモートリポジトリへpushする際にハマった話

こちらは、GitHub初心者向けの記事となります。
【記事を書いた人】
医療事務員から未経験でフロントエンドエンジニアになった すず と申します!

GitHubを久しぶりに使ったらエラーにハマってしまったので、解決するまでに行ったことを備忘録として上げておきます。

【GitHub】ローカルリポジトリをリモートリポジトリへpushする際にハマった話

ローカルで先に作っていたリポジトリをリモートリポジトリにpushしようとした際に、事件は起きました・・・

やりたいこと

ローカルで作ったソースをリモートリポジトリに上げたい

エラーの内容

$ git push -u origin main

実行時に以下のエラーが発生。

ERROR: Permission to suzu/test-repository.git denied to kimura-takuya.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

問題点

エラーの1行目に注目…

ERROR: Permission to suzu/test-repository.git denied to kimura-takuya.

いやいや、キムタクどっから出てきたん!?

どうやらGitHubのアカウントが複数ある状態で、今回「suzu」というアカウントでログインしたいのに、「kimura-takuya」という別のアカウントでログインしようとしてしまっているらしい。

なので、ログインアカウントを「kimura-takuya」から「suzu」に変更しなきゃいけない。

試したこと

リモートリポジトリを確認

まずは、現在登録されているリモートリポジトリの一覧を表示し、確認。

$ git remote -v

origin	git@github.com:suzu/test-repository.git (fetch)
origin	git@github.com:suzu/test-repository.git (push)

ここは問題なし。

GitHubにSSH接続する

$ ssh git@github.com

PTY allocation request failed on channel 0
Hi kimura-takuya! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.

ここでも「suzu」ではなく「kimura-takuya」で接続しちゃってるのが分かる。

configを確認

$ git config --list

credential.helper=osxkeychain
user.name=suzu
user.email=hogehoge@gmail.com
user.mane=kimura-takuya
user.emal=fugafuga@gmail.com
remote.origin.url=git@github.com:suzu/test-repository.git

「suzu」と「kimura-takuya」どちらもユーザ登録されてるっぽい。

再度pushしてみる

何も変わってないけど、ワンチャンとか思って再度pushしてみる。

$ git push -u origin master

ERROR: Repository not found.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

なんかエラー変わっちゃったww
こちゃこちゃいろいろ見たりしてたから、記憶にない操作しちゃったかも・・・すまん。

ひとまず「アクセス権正しい?」って聞かれてるっぽい。

GitHubとのSSH接続を確認

$ ssh -T git@github.com

Hi kimura-takuya! You've successfully authenticated, but GitHub does not provide shell access.

やっぱりまだキムタクがやりとりしちゃってるな(´・ω・`)

SSHキーをssh-agentから削除

いらないキムタクのSSHキーを削除することに。
まずは登録されている鍵(フィンガープリント)を確認する。

$ ssh-add -l

56 SHA256:[鍵のデータ] [鍵ファイルpath または キーコメント] ([暗号化アルゴリズム:RSA等])
4096 SHA256:[鍵のデータ] [鍵ファイルpath または キーコメント] ([暗号化アルゴリズム:RSA等])
3072 SHA256:[鍵のデータ] [鍵ファイルpath または キーコメント] ([暗号化アルゴリズム:RSA等])

どれがどれか分からないから、一旦全部削除するかww

$ ssh-add -D

All identities removed.

これでSSHキーがすべて削除されたっぽい。

known_hostsからフィンガープリント情報を削除

~/.ssh/known_hostsに、古いGitHubアカウントで接続したときのフィンガープリント情報が残っちゃうらしいので、削除します。

$ ssh-keygen -R github.com

# Host github.com found: line 1
# Host github.com found: line 2
# Host github.com found: line 3
/Users/xxxxx/.ssh/known_hosts updated.
Original contents retained as /Users/xxxxx/.ssh/known_hosts.old

これで古いアカウント情報は削除されました。

新たにSSHキーを作成する

上記手順で鍵を全削除したので、新しい鍵をつくる。
まずはsshフォルダに移動してから鍵をつくる。

$ cd ~/.ssh
$ ssh-keygen -t rsa

Generating public/private rsa key pair.

# 以下3行は今回そのままEnterで進めちゃってOK
Enter file in which to save the key (/Users/xxxxx/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

Your identification has been saved in /Users/xxxxx/.ssh/id_rsa
Your public key has been saved in /Users/xxxxx/.ssh/id_rsa.pub

「id_rsa」という秘密鍵と「id_rsa.pub」という公開鍵ができました!

公開鍵をクリップボードにコピー

次の手順で公開鍵(id_rsa.pub)をGitHubに追加するため、以下のコマンドを使用し、クリップボードに公開鍵をコピーします。

$ pbcopy < ~/.ssh/id_rsa.pub

GitHubに公開鍵を追加する

ここからはGitHubでの操作になるため、一旦ターミナルから離れます。

GitHubにログインし、https://github.com/settings/keysにアクセスしてください。
(GitHubの「Settings」 -> 「SSH and GPG keys」からもアクセス可能)

アクセスしたら、画面右上の「New SSH key」ボタンを押します。

次に「Title」欄に任意の公開鍵名を(「MacBook」とか自分が判別できるものでOK)、「Key」欄に上記でクリップボードにコピーした公開鍵をそのまま貼り付けて、「Add SSH Key」ボタンを押して保存する。

再度GitHubとのSSH接続を確認

再度接続を確かめます。

$ ssh -T git@github.com

Hi suzu! You've successfully authenticated, but GitHub does not provide shell access.

ついに「suzu」で接続できました!!!

リモートURLの確認

GitHubとやりとりする際に毎回IDとパスワードが聞かれる場合は、SSH接続がうまくいっていないです。
リポジトリのディレクトリに入り、以下コマンドを実行して確認します。

$ git config remote.origin.url

git@github.com:suzu/test-repository.git

もし、https://github.com/[ユーザID]/[リポジトリ]と返ってきた場合はHTTP接続になってしまっているので、SSH接続に変更します。

$ git remote set-url origin git@github.com:[ユーザID]/[リポジトリ].git

これで無事にpushができました!