【Git・GitHub】git clone が認証エラーで失敗する場合の対応手順

企業のGitHubリポジトリへ自宅の個人PCから git clone しようとしたらエラー連発だったので対処した手順を残したいと思います。リモートワークでこの手のエラーで困っている人もいるかと思いますので参考になれば幸い。

【Git・GitHub】git clone が認証エラーで失敗する場合の対応手順

普通に https:// でクローンしようとすると「リポジトリが見つからない」と言われてしまいました。

$ git clone https://github.com/チームアカウント名/リポジトリ名.git
fatal: repository 'https://github.com/チームアカウント名/リポジトリ名.git/' not found

最初に試したのは、自分のユーザー名とパスワードを含ませたURLでクローンしてみました。

$ git clone https://{自分のユーザー名}:{パスワード}@github.com/チームアカウント名/リポジトリ名.git

アクセスは届いたようですが、今度は認証エラーとなりました。

fatal: Authentication failed for 'https://github.com/チームアカウント名/リポジトリ名.git/'

次に ssh で github.com へ疎通するか確認しましたが、認証拒否されてしまいました。

$ ssh -T git@github.com
Warning: Permanently added 'github.com,52.192.72.89' (RSA) to the list of known hosts.

調べてみたところ、自分のGitHubアカウントのメールアドレスを紐付けた公開鍵を作成してGitHubに登録すれば良いとのこと。

公開鍵と秘密鍵のペアは ssh-keygen コマンドで生成します。

$ ssh-keygen -t rsa -C 自分のGitHubアカウントのメールアドレス

鍵のパスフレーズを2回入力します。鍵のパスフレーズは絶対に忘れないように控えておきましょう

以下のように出力されるはずです。

秘密鍵と公開鍵のペアが生成されているか確認しましょう。

$ ls ~/.ssh/
id_rsa		id_rsa.pub

id_rsa が秘密鍵、id_rsa.pub が公開鍵です。

公開鍵のファイルを less で開きましょう。

$ less ~/.ssh/id_rsa.pub

先頭が ssh-rsa から始まり末尾がメールアドレスとなっているはずです。

ssh-rsa xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= hogehoge@example.com

上記の xxxx となっている部分から=まで(実際は半角英数字記号の羅列)をコピーしましょう。

2021/08/16訂正 最近、再作成してみたらフォーマットエラーが発生し、 ssh-rsa 〜 hogehoge@example.com までの全体をコピーしなくてはならなくなっていましたので訂正します。

GitHubのSettingページ(https://github.com/settings/profile)を開きます。

SSH and GPG keys メニューを開き、New SSH key をクリックしましょう。

Key の枠に先程コピーした公開鍵情報をペーストしましょう。Title は任意ですが識別できるように何かしら付けておいても良いかと思います。

Add SSH key をクリックして登録を完了します。以下のようになっていればOKです。

ターミナルへ戻り疎通を確認してみます。

$ ssh -T git@github.com

認証鍵のパスフレーズを入力し上記のメッセージが出れば疎通は問題ありません。

もう一度クローンしてみましょう。

$ git clone https://{自分のユーザー名}:{パスワード}@github.com/チームアカウント名/リポジトリ名.git
fatal: Authentication failed for 'https://github.com/チームアカウント名/リポジトリ名.git/'

残念ながら https 通信ではやはり認証が通りません。なので ssh でクローンします。

$ git clone ssh://git@github/チームアカウント名/リポジトリ名

再び鍵のパスフレーズを聞かれるので入力するとクローンが成功しました!

pull や push の時もパスフレーズを聞かれると思いますがこれで開発を進めることができるかと思います。

以上