" いいね " なライフをつくる。

うそはつかない。"いいね"をつくる。じゆーうな日記です。

【git エラー解決策】Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. が出た時の解決方法

環境、対象

gitにpushした際に、権限がなくpushできないエラーが発生した際の対処法 (git cloneでも同じことは起こります)

エラ〜文章は↓こちらです。

$ git push origin master
Permission denied (publickey). fatal: Could not read from remote repository.  Please make sure you have the correct access rights and the repository exists.

要点

  • 理由はわかりませんでしたが対象のリモートリポジトリへのアクセス権限がなく、失敗するようになりました。
  • 結論から言うと、鍵認証周りを再設定し直すことで解消できましたので、記載します。

流れは以下の通りです。

  • 鍵を生成する。
  • 公開鍵をgitに登録する。
  • configファイルを作成し直し、接続確認を行う。

内容

1. 鍵を作成する。

# 移動  
$ cd ~/.ssh

# 鍵を作成する。 (メールアドレスはgitアカウントのメールアドレスです)
$ ssh-keygen -t rsa -C mail@mail.com
Enter file in which to save the key (/home/vagrant/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
ssh-keygenコマンドについて
  • ssh-keygenは認証用の鍵を作成するコマンドです

  • ssh-keygenの後ろの、-t rsa というオプションは、RSA暗号というタイプの暗号(桁数が大きい合成数素因数分解問題が困難であることを安全性の根拠とした暗号)の鍵を生成するという意味合いになります。

keygen実行後の3つの質問について。
  • ssh-kegen実行時に何かを聞かれるので、Enterを3回押せば先へ進めます。(一応意味合いとしては↓になります)

3つの質問

  • 1 鍵ファイルを保存するフォルダはどこか (Enter file in which to save the key)
  • パスフレーズを入力してください (Enter passphrase:)
  • パスフレーズを再度入力してください (Enter same passphrase again:)

(ちなみにパスフレーズというのは、パスワードのようなもので、パスワードよりも長大なパスを設定できます。 )

# ファイルid_rsa と id_rsa.pubができていることを確認  
$ ls 
id_rsa id_rsa.pub 

# id_rsa.pubを開く  
$ less id_rsa.pub
  • id_rsa秘密鍵、id_rsa.pubというのが公開鍵になります。 この公開鍵をgithubに登録し直します。

  • lessコマンドでid_rsa.pubを開き、中の文字列 ssh-rsaから始まる文字列をコピーします。

2. githubのマイページで行う作業

  • 次はgithubのマイページで、この鍵を登録します。右上のアイコンをクリックし、settings → SSH and GPG keysをクリックしてください。次に、右上のnew keysをクリックしてください。

f:id:tusukurukun:20180829014336p:plain

  • 次の画面で、先ほどコピーした文字列をkeyの箇所に貼り付けてください(titleは任意の識別できる値を入力してください)

f:id:tusukurukun:20180829014424p:plain

  • ちなみに、コピーした文字列の末尾にメールアドレスが入っている場合には、そのメールアドレスは削除してください!

ここまでできたら、ターミナルに戻ります。

3. ターミナルにて設定を行い、疎通確認をして完了

~/.ssh/にて、configファイルを作成します。
$ vim config   

~/.ssh/config

Host github
  HostName github.com
  IdentityFile ~/.ssh/id_rsa
  User git

↑こちらの内容を追記してください (すでにこのファイルがある場合で、先へ進めない場合には、このファイルを一度再作成しなおしてみてください。)

# 接続確認
$ ssh -T git@github.com
Hi xxxxxxxxx! You've successfully authenticated, but GitHub does not provide shell access.
  • これでsuccessfullyの文字が出れば接続成功ですので、git pushができるようになっていると思います。そもそもなぜこれが起こったのかについてはまだわからないので、 鍵を作成し直すという強引な方法ですが一応こちらで解決できます。

おさらい

流れは以下の通りです。

  • 鍵を生成する。
  • 公開鍵をgitに登録する。
  • configファイルを作成し直し、接続確認を行う。

以上、git pushの際にエラーが出た場合の対応方法でした。